├── .github ├── dependabot.yml └── workflows │ ├── IJ-latest.yml │ ├── IJ.yml │ ├── ci.yml │ ├── conventionalCheck.yml │ ├── dependency-submission.yml │ ├── it.yml │ ├── nightly.yml │ └── release.yml ├── .gitignore ├── CONTRIBUTING.md ├── DCO ├── LICENSE ├── Makefile ├── README.md ├── USAGE_DATA.md ├── build.gradle.kts ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── images ├── categories.png ├── describe-pod.png ├── editor-bas64-encoded-value.png ├── editor-diff.png ├── editor-labels-matching-selectors.png ├── editor-pull-push.png ├── editor-pulled.png ├── editor-push.gif ├── editor-push.png ├── editor-schema.png ├── editor-toolbar-diff.png ├── editor-toolbar-pull.png ├── editor-toolbar-push.png ├── editor.png ├── logs.png ├── pod.png ├── set-replicas.png └── terminal.png ├── scripts └── build_local.sh ├── settings.gradle.kts └── src ├── it └── java │ └── org │ └── jboss │ └── tools │ └── intellij │ └── kubernetes │ ├── BasicTests.java │ ├── fixtures │ ├── dialogs │ │ └── IdeFatalErrorsDialogFixture.java │ ├── mainidewindow │ │ ├── ActionPanelLabelFixture.java │ │ ├── EditorsSplittersFixture.java │ │ ├── IdeStatusBarFixture.java │ │ └── KubernetesToolsFixture.java │ └── menus │ │ ├── ActionToolbarMenu.java │ │ └── RightClickMenu.java │ └── tests │ ├── AbstractKubernetesTest.java │ ├── ClusterConnectedTest.java │ ├── CreateAnotherTypeResourceByEditTest.java │ ├── CreateResourceByEditTest.java │ ├── EditResourceTest.java │ └── OpenResourceEditorTest.java ├── main ├── kotlin │ ├── com │ │ └── redhat │ │ │ └── devtools │ │ │ └── intellij │ │ │ └── kubernetes │ │ │ ├── CompletableFutureUtils.kt │ │ │ ├── KubernetesPluginInitializer.kt │ │ │ ├── SwingUtils.kt │ │ │ ├── actions │ │ │ ├── DeleteResourceAction.kt │ │ │ ├── DescribeResourceAction.kt │ │ │ ├── EditResourceAction.kt │ │ │ ├── Extensions.kt │ │ │ ├── FollowLogsAction.kt │ │ │ ├── OpenDashboardAction.kt │ │ │ ├── OpenInBrowserAction.kt │ │ │ ├── RefreshAction.kt │ │ │ ├── ScaleReplicaAction.kt │ │ │ ├── SetAsCurrentClusterAction.kt │ │ │ ├── SetCurrentNamespaceAction.kt │ │ │ ├── SetCurrentProjectAction.kt │ │ │ ├── TerminalAction.kt │ │ │ ├── UseNamespaceAction.kt │ │ │ ├── UseProjectAction.kt │ │ │ └── UseResourceAction.kt │ │ │ ├── balloon │ │ │ ├── ErrorBalloon.kt │ │ │ └── StringInputBalloon.kt │ │ │ ├── console │ │ │ ├── ConsoleOutputStream.kt │ │ │ ├── ConsoleTab.kt │ │ │ ├── ConsolesToolWindow.kt │ │ │ ├── ConsolesToolWindowFactory.kt │ │ │ ├── FailureCallbackOutputStream.kt │ │ │ ├── LogTab.kt │ │ │ ├── SimpleCardLayoutPanel.kt │ │ │ └── TerminalTab.kt │ │ │ ├── dialogs │ │ │ ├── ResourceNameDialog.kt │ │ │ └── ScaleReplicaDialog.kt │ │ │ ├── editor │ │ │ ├── ClusterResource.kt │ │ │ ├── EditorFocusListener.kt │ │ │ ├── EditorResource.kt │ │ │ ├── EditorResourceSerialization.kt │ │ │ ├── EditorResourceState.kt │ │ │ ├── EditorResources.kt │ │ │ ├── EditorToolbarFactory.kt │ │ │ ├── EditorTransactionListener.kt │ │ │ ├── FileEditorExtensions.kt │ │ │ ├── KubernetesEditorsTabTitleProvider.kt │ │ │ ├── PersistentEditorValue.kt │ │ │ ├── ResourceDiff.kt │ │ │ ├── ResourceEditor.kt │ │ │ ├── ResourceEditorFactory.kt │ │ │ ├── ResourceEditorTabTitleProvider.kt │ │ │ ├── ResourceFile.kt │ │ │ ├── actions │ │ │ │ ├── DiffAction.kt │ │ │ │ ├── PullAction.kt │ │ │ │ ├── PushAllAction.kt │ │ │ │ ├── PushModifiedAction.kt │ │ │ │ └── RemoveClutterAction.kt │ │ │ ├── describe │ │ │ │ ├── Description.kt │ │ │ │ ├── DescriptionUtils.kt │ │ │ │ ├── DescriptionViewerDispatcher.kt │ │ │ │ ├── DescriptionViewerTabTitleProvider.kt │ │ │ │ ├── YAMLDescription.kt │ │ │ │ ├── describer │ │ │ │ │ ├── ContainersDescriber.kt │ │ │ │ │ ├── Describer.kt │ │ │ │ │ ├── PersistentVolumeClaimDescriber.kt │ │ │ │ │ ├── PodDescriber.kt │ │ │ │ │ └── VolumesDescriber.kt │ │ │ │ └── paragraphs │ │ │ │ │ ├── Chapter.kt │ │ │ │ │ ├── HasChildren.kt │ │ │ │ │ ├── NamedSequence.kt │ │ │ │ │ ├── NamedValue.kt │ │ │ │ │ └── Paragraph.kt │ │ │ ├── inlay │ │ │ │ ├── ResourceEditorInlayHintsProvider.kt │ │ │ │ ├── base64 │ │ │ │ │ ├── Base64Presentations.kt │ │ │ │ │ └── Base64ValueAdapter.kt │ │ │ │ └── selector │ │ │ │ │ └── SelectorPresentations.kt │ │ │ ├── notification │ │ │ │ ├── DeletedNotification.kt │ │ │ │ ├── ErrorNotification.kt │ │ │ │ ├── NotificationActions.kt │ │ │ │ ├── Notifications.kt │ │ │ │ ├── PullNotification.kt │ │ │ │ ├── PulledNotification.kt │ │ │ │ ├── PushNotification.kt │ │ │ │ └── PushedNotification.kt │ │ │ └── util │ │ │ │ ├── DisposedState.kt │ │ │ │ ├── FileEditorUtils.kt │ │ │ │ ├── KubernetesTypeInfoUtils.kt │ │ │ │ ├── PsiElements.kt │ │ │ │ ├── ResourceEditorUtils.kt │ │ │ │ ├── ResourcePsiElementUtils.kt │ │ │ │ └── SelectorPsiElementUtils.kt │ │ │ ├── model │ │ │ ├── AllContexts.kt │ │ │ ├── Notification.kt │ │ │ ├── ProcessWatches.kt │ │ │ ├── ResourceModel.kt │ │ │ ├── ResourceModelObservable.kt │ │ │ ├── ResourceModelQuery.kt │ │ │ ├── ResourceWatch.kt │ │ │ ├── client │ │ │ │ ├── ClientAdapter.kt │ │ │ │ ├── ClientConfig.kt │ │ │ │ └── KubeConfigAdapter.kt │ │ │ ├── context │ │ │ │ ├── ActiveContext.kt │ │ │ │ ├── Context.kt │ │ │ │ ├── IActiveContext.kt │ │ │ │ ├── KubernetesContext.kt │ │ │ │ ├── LazyOpenShiftContext.kt │ │ │ │ └── OpenShiftContext.kt │ │ │ ├── dashboard │ │ │ │ ├── AbstractDashboard.kt │ │ │ │ ├── HttpRequest.kt │ │ │ │ ├── KubernetesDashboard.kt │ │ │ │ └── OpenShiftDashboard.kt │ │ │ ├── resource │ │ │ │ ├── APIResources.kt │ │ │ │ ├── AbstractResourceOperator.kt │ │ │ │ ├── IResourceOperator.kt │ │ │ │ ├── IResourceOperatorFactory.kt │ │ │ │ ├── IWatchableProcess.kt │ │ │ │ ├── NamespacedResourceOperator.kt │ │ │ │ ├── NonCachingSingleResourceOperator.kt │ │ │ │ ├── NonNamespacedResourceOperator.kt │ │ │ │ ├── OperatorFactory.kt │ │ │ │ ├── ResourceIdentifier.kt │ │ │ │ ├── ResourceKind.kt │ │ │ │ ├── kubernetes │ │ │ │ │ ├── AllPodsOperator.kt │ │ │ │ │ ├── ConfigMapsOperator.kt │ │ │ │ │ ├── CronJobsOperator.kt │ │ │ │ │ ├── DaemonSetsOperator.kt │ │ │ │ │ ├── DeploymentsOperator.kt │ │ │ │ │ ├── EndpointsOperator.kt │ │ │ │ │ ├── Filters.kt │ │ │ │ │ ├── IngressOperator.kt │ │ │ │ │ ├── JobsOperator.kt │ │ │ │ │ ├── KubernetesReplicas.kt │ │ │ │ │ ├── NamespacedPodsOperator.kt │ │ │ │ │ ├── NamespacesOperator.kt │ │ │ │ │ ├── NodesOperator.kt │ │ │ │ │ ├── PersistentVolumeClaimsOperator.kt │ │ │ │ │ ├── PersistentVolumesOperator.kt │ │ │ │ │ ├── ReplicaSetsOperator.kt │ │ │ │ │ ├── SecretsOperator.kt │ │ │ │ │ ├── ServicesOperator.kt │ │ │ │ │ ├── StatefulSetsOperator.kt │ │ │ │ │ ├── StorageClassesOperator.kt │ │ │ │ │ ├── custom │ │ │ │ │ │ ├── CustomResourceDefinitionContextFactory.kt │ │ │ │ │ │ ├── CustomResourceDefinitionsOperator.kt │ │ │ │ │ │ ├── CustomResourceOperatorFactory.kt │ │ │ │ │ │ ├── NamespacedCustomResourceOperator.kt │ │ │ │ │ │ └── NonNamespacedCustomResourceOperator.kt │ │ │ │ │ └── hasmetadata │ │ │ │ │ │ └── HasMetadataResource.kt │ │ │ │ └── openshift │ │ │ │ │ ├── BuildConfigsOperator.kt │ │ │ │ │ ├── BuildsOperator.kt │ │ │ │ │ ├── DeploymentConfigsOperator.kt │ │ │ │ │ ├── Filters.kt │ │ │ │ │ ├── ImageStreamsOperator.kt │ │ │ │ │ ├── OpenShiftReplicas.kt │ │ │ │ │ ├── ProjectsOperator.kt │ │ │ │ │ ├── ReplicationControllersOperator.kt │ │ │ │ │ └── RoutesOperator.kt │ │ │ └── util │ │ │ │ ├── ConfigUtils.kt │ │ │ │ ├── ContainerUtils.kt │ │ │ │ ├── ExceptionUtils.kt │ │ │ │ ├── FileUtils.kt │ │ │ │ ├── KubernetesClientExceptionExtensions.kt │ │ │ │ ├── KubernetesClientExceptionUtils.kt │ │ │ │ ├── MultiResourceException.kt │ │ │ │ ├── PluginException.kt │ │ │ │ ├── PodUtils.kt │ │ │ │ ├── ResettableLazyProperty.kt │ │ │ │ ├── ResourceException.kt │ │ │ │ └── ResourceUtils.kt │ │ │ ├── settings │ │ │ ├── Settings.kt │ │ │ ├── SettingsChangeListener.kt │ │ │ ├── SettingsComponent.kt │ │ │ └── SettingsConfigurable.kt │ │ │ ├── telemetry │ │ │ └── TelemetryService.kt │ │ │ ├── tree │ │ │ ├── AbstractTreeStructureContribution.kt │ │ │ ├── ITreeStructureContribution.kt │ │ │ ├── ITreeStructureContributionFactory.kt │ │ │ ├── KubernetesDescriptors.kt │ │ │ ├── KubernetesStructure.kt │ │ │ ├── MultiParentTreeStructure.kt │ │ │ ├── OpenShiftDescriptors.kt │ │ │ ├── OpenShiftStructure.kt │ │ │ ├── ResourceTreeToolWindowFactory.kt │ │ │ ├── ResourceWatchController.kt │ │ │ ├── TreeStructure.kt │ │ │ ├── TreeUpdater.kt │ │ │ └── util │ │ │ │ ├── TreeNodeElementUtils.kt │ │ │ │ └── TreeUtils.kt │ │ │ ├── usage │ │ │ ├── LabelsFilter.kt │ │ │ ├── PsiElementMappingsFilter.kt │ │ │ ├── SelectorDescriptionProvider.kt │ │ │ ├── SelectorUsageSearcher.kt │ │ │ ├── SelectorUsagesHandlerFactory.kt │ │ │ └── SelectorsFilter.kt │ │ │ └── validation │ │ │ ├── KubernetesSchemaProvider.kt │ │ │ └── KubernetesSchemaProviderFactory.kt │ └── icons │ │ └── Icons.kt └── resources │ ├── META-INF │ ├── plugin-json.xml │ ├── plugin.xml │ ├── pluginIcon.svg │ └── pluginIcon13x13.svg │ ├── icons │ ├── consoles-toolwindow.svg │ ├── consoles-toolwindow_dark.svg │ ├── consoles.svg │ ├── consoles_dark.svg │ ├── diff.svg │ ├── diff_dark.svg │ ├── download.svg │ ├── download_dark.svg │ ├── error-pod.svg │ ├── kubernetes-cluster.svg │ ├── label.svg │ ├── label2.svg │ ├── lupe.svg │ ├── namespace.svg │ ├── openshift-cluster.svg │ ├── remove-clutter.svg │ ├── remove-clutter_dark.svg │ ├── running-pod.svg │ ├── selector.svg │ ├── selector2.svg │ ├── terminal.svg │ ├── terminal_dark.svg │ ├── upload-modified.svg │ ├── upload-modified_dark.svg │ ├── upload.svg │ └── upload_dark.svg │ └── schemas │ └── k8s.io │ ├── _definitions.json │ ├── affinity-v1.json │ ├── aggregationrule-rbac-v1.json │ ├── all.json │ ├── allowedcsidriver-policy-v1beta1.json │ ├── allowedflexvolume-policy-v1beta1.json │ ├── allowedhostpath-policy-v1beta1.json │ ├── apigroup-meta-v1.json │ ├── apigrouplist-meta-v1.json │ ├── apiresource-meta-v1.json │ ├── apiresourcelist-meta-v1.json │ ├── apiservice-apiregistration-v1.json │ ├── apiservicecondition-apiregistration-v1.json │ ├── apiservicelist-apiregistration-v1.json │ ├── apiservicespec-apiregistration-v1.json │ ├── apiservicestatus-apiregistration-v1.json │ ├── apiversions-meta-v1.json │ ├── attachedvolume-v1.json │ ├── awselasticblockstorevolumesource-v1.json │ ├── azurediskvolumesource-v1.json │ ├── azurefilepersistentvolumesource-v1.json │ ├── azurefilevolumesource-v1.json │ ├── binding-v1.json │ ├── boundobjectreference-authentication-v1.json │ ├── capabilities-v1.json │ ├── cephfspersistentvolumesource-v1.json │ ├── cephfsvolumesource-v1.json │ ├── certificatesigningrequest-certificates-v1.json │ ├── certificatesigningrequestcondition-certificates-v1.json │ ├── certificatesigningrequestlist-certificates-v1.json │ ├── certificatesigningrequestspec-certificates-v1.json │ ├── certificatesigningrequeststatus-certificates-v1.json │ ├── cinderpersistentvolumesource-v1.json │ ├── cindervolumesource-v1.json │ ├── clientipconfig-v1.json │ ├── clusterrole-rbac-v1.json │ ├── clusterrolebinding-rbac-v1.json │ ├── clusterrolebindinglist-rbac-v1.json │ ├── clusterrolelist-rbac-v1.json │ ├── componentcondition-v1.json │ ├── componentstatus-v1.json │ ├── componentstatuslist-v1.json │ ├── condition-meta-v1.json │ ├── configmap-v1.json │ ├── configmapenvsource-v1.json │ ├── configmapkeyselector-v1.json │ ├── configmaplist-v1.json │ ├── configmapnodeconfigsource-v1.json │ ├── configmapprojection-v1.json │ ├── configmapvolumesource-v1.json │ ├── container-v1.json │ ├── containerimage-v1.json │ ├── containerport-v1.json │ ├── containerresourcemetricsource-autoscaling-v2.json │ ├── containerresourcemetricsource-autoscaling-v2beta1.json │ ├── containerresourcemetricsource-autoscaling-v2beta2.json │ ├── containerresourcemetricstatus-autoscaling-v2.json │ ├── containerresourcemetricstatus-autoscaling-v2beta1.json │ ├── containerresourcemetricstatus-autoscaling-v2beta2.json │ ├── containerstate-v1.json │ ├── containerstaterunning-v1.json │ ├── containerstateterminated-v1.json │ ├── containerstatewaiting-v1.json │ ├── containerstatus-v1.json │ ├── controllerrevision-apps-v1.json │ ├── controllerrevisionlist-apps-v1.json │ ├── cronjob-batch-v1.json │ ├── cronjob-batch-v1beta1.json │ ├── cronjoblist-batch-v1.json │ ├── cronjoblist-batch-v1beta1.json │ ├── cronjobspec-batch-v1.json │ ├── cronjobspec-batch-v1beta1.json │ ├── cronjobstatus-batch-v1.json │ ├── cronjobstatus-batch-v1beta1.json │ ├── crossversionobjectreference-autoscaling-v1.json │ ├── crossversionobjectreference-autoscaling-v2.json │ ├── crossversionobjectreference-autoscaling-v2beta1.json │ ├── crossversionobjectreference-autoscaling-v2beta2.json │ ├── csidriver-storage-v1.json │ ├── csidriverlist-storage-v1.json │ ├── csidriverspec-storage-v1.json │ ├── csinode-storage-v1.json │ ├── csinodedriver-storage-v1.json │ ├── csinodelist-storage-v1.json │ ├── csinodespec-storage-v1.json │ ├── csipersistentvolumesource-v1.json │ ├── csistoragecapacity-storage-v1.json │ ├── csistoragecapacity-storage-v1beta1.json │ ├── csistoragecapacitylist-storage-v1.json │ ├── csistoragecapacitylist-storage-v1beta1.json │ ├── csivolumesource-v1.json │ ├── customresourcecolumndefinition-apiextensions-v1.json │ ├── customresourceconversion-apiextensions-v1.json │ ├── customresourcedefinitioncondition-apiextensions-v1.json │ ├── customresourcedefinitionnames-apiextensions-v1.json │ ├── customresourcedefinitionstatus-apiextensions-v1.json │ ├── customresourcesubresources-apiextensions-v1.json │ ├── customresourcesubresourcescale-apiextensions-v1.json │ ├── customresourcesubresourcestatus-apiextensions-v1.json │ ├── daemonendpoint-v1.json │ ├── daemonset-apps-v1.json │ ├── daemonsetcondition-apps-v1.json │ ├── daemonsetlist-apps-v1.json │ ├── daemonsetspec-apps-v1.json │ ├── daemonsetstatus-apps-v1.json │ ├── daemonsetupdatestrategy-apps-v1.json │ ├── deleteoptions-meta-v1.json │ ├── deployment-apps-v1.json │ ├── deploymentcondition-apps-v1.json │ ├── deploymentlist-apps-v1.json │ ├── deploymentspec-apps-v1.json │ ├── deploymentstatus-apps-v1.json │ ├── deploymentstrategy-apps-v1.json │ ├── downwardapiprojection-v1.json │ ├── downwardapivolumefile-v1.json │ ├── downwardapivolumesource-v1.json │ ├── emptydirvolumesource-v1.json │ ├── endpoint-discovery-v1.json │ ├── endpoint-discovery-v1beta1.json │ ├── endpointaddress-v1.json │ ├── endpointconditions-discovery-v1.json │ ├── endpointconditions-discovery-v1beta1.json │ ├── endpointhints-discovery-v1.json │ ├── endpointhints-discovery-v1beta1.json │ ├── endpointport-discovery-v1.json │ ├── endpointport-discovery-v1beta1.json │ ├── endpointport-v1.json │ ├── endpoints-v1.json │ ├── endpointslice-discovery-v1.json │ ├── endpointslice-discovery-v1beta1.json │ ├── endpointslicelist-discovery-v1.json │ ├── endpointslicelist-discovery-v1beta1.json │ ├── endpointslist-v1.json │ ├── endpointsubset-v1.json │ ├── envfromsource-v1.json │ ├── envvar-v1.json │ ├── envvarsource-v1.json │ ├── ephemeralcontainer-v1.json │ ├── ephemeralvolumesource-v1.json │ ├── event-events-v1.json │ ├── event-events-v1beta1.json │ ├── event-v1.json │ ├── eventlist-events-v1.json │ ├── eventlist-events-v1beta1.json │ ├── eventlist-v1.json │ ├── eventseries-events-v1.json │ ├── eventseries-events-v1beta1.json │ ├── eventseries-v1.json │ ├── eventsource-v1.json │ ├── eviction-policy-v1.json │ ├── execaction-v1.json │ ├── externaldocumentation-apiextensions-v1.json │ ├── externalmetricsource-autoscaling-v2.json │ ├── externalmetricsource-autoscaling-v2beta1.json │ ├── externalmetricsource-autoscaling-v2beta2.json │ ├── externalmetricstatus-autoscaling-v2.json │ ├── externalmetricstatus-autoscaling-v2beta1.json │ ├── externalmetricstatus-autoscaling-v2beta2.json │ ├── fcvolumesource-v1.json │ ├── fieldsv1-meta-v1.json │ ├── flexpersistentvolumesource-v1.json │ ├── flexvolumesource-v1.json │ ├── flockervolumesource-v1.json │ ├── flowdistinguishermethod-flowcontrol-v1beta1.json │ ├── flowdistinguishermethod-flowcontrol-v1beta2.json │ ├── flowschema-flowcontrol-v1beta1.json │ ├── flowschema-flowcontrol-v1beta2.json │ ├── flowschemacondition-flowcontrol-v1beta1.json │ ├── flowschemacondition-flowcontrol-v1beta2.json │ ├── flowschemalist-flowcontrol-v1beta1.json │ ├── flowschemalist-flowcontrol-v1beta2.json │ ├── flowschemaspec-flowcontrol-v1beta1.json │ ├── flowschemaspec-flowcontrol-v1beta2.json │ ├── flowschemastatus-flowcontrol-v1beta1.json │ ├── flowschemastatus-flowcontrol-v1beta2.json │ ├── forzone-discovery-v1.json │ ├── forzone-discovery-v1beta1.json │ ├── fsgroupstrategyoptions-policy-v1beta1.json │ ├── gcepersistentdiskvolumesource-v1.json │ ├── gitrepovolumesource-v1.json │ ├── glusterfspersistentvolumesource-v1.json │ ├── glusterfsvolumesource-v1.json │ ├── groupsubject-flowcontrol-v1beta1.json │ ├── groupsubject-flowcontrol-v1beta2.json │ ├── groupversionfordiscovery-meta-v1.json │ ├── grpcaction-v1.json │ ├── horizontalpodautoscaler-autoscaling-v1.json │ ├── horizontalpodautoscaler-autoscaling-v2.json │ ├── horizontalpodautoscaler-autoscaling-v2beta1.json │ ├── horizontalpodautoscaler-autoscaling-v2beta2.json │ ├── horizontalpodautoscalerbehavior-autoscaling-v2.json │ ├── horizontalpodautoscalerbehavior-autoscaling-v2beta2.json │ ├── horizontalpodautoscalercondition-autoscaling-v2.json │ ├── horizontalpodautoscalercondition-autoscaling-v2beta1.json │ ├── horizontalpodautoscalercondition-autoscaling-v2beta2.json │ ├── horizontalpodautoscalerlist-autoscaling-v1.json │ ├── horizontalpodautoscalerlist-autoscaling-v2.json │ ├── horizontalpodautoscalerlist-autoscaling-v2beta1.json │ ├── horizontalpodautoscalerlist-autoscaling-v2beta2.json │ ├── horizontalpodautoscalerspec-autoscaling-v1.json │ ├── horizontalpodautoscalerspec-autoscaling-v2.json │ ├── horizontalpodautoscalerspec-autoscaling-v2beta1.json │ ├── horizontalpodautoscalerspec-autoscaling-v2beta2.json │ ├── horizontalpodautoscalerstatus-autoscaling-v1.json │ ├── horizontalpodautoscalerstatus-autoscaling-v2.json │ ├── horizontalpodautoscalerstatus-autoscaling-v2beta1.json │ ├── horizontalpodautoscalerstatus-autoscaling-v2beta2.json │ ├── hostalias-v1.json │ ├── hostpathvolumesource-v1.json │ ├── hostportrange-policy-v1beta1.json │ ├── hpascalingpolicy-autoscaling-v2.json │ ├── hpascalingpolicy-autoscaling-v2beta2.json │ ├── hpascalingrules-autoscaling-v2.json │ ├── hpascalingrules-autoscaling-v2beta2.json │ ├── httpgetaction-v1.json │ ├── httpheader-v1.json │ ├── httpingresspath-networking-v1.json │ ├── httpingressrulevalue-networking-v1.json │ ├── idrange-policy-v1beta1.json │ ├── index.txt │ ├── info-pkg-version.json │ ├── ingress-networking-v1.json │ ├── ingressbackend-networking-v1.json │ ├── ingressclass-networking-v1.json │ ├── ingressclasslist-networking-v1.json │ ├── ingressclassparametersreference-networking-v1.json │ ├── ingressclassspec-networking-v1.json │ ├── ingresslist-networking-v1.json │ ├── ingressrule-networking-v1.json │ ├── ingressservicebackend-networking-v1.json │ ├── ingressspec-networking-v1.json │ ├── ingressstatus-networking-v1.json │ ├── ingresstls-networking-v1.json │ ├── intorstring-util-intstr.json │ ├── ipblock-networking-v1.json │ ├── iscsipersistentvolumesource-v1.json │ ├── iscsivolumesource-v1.json │ ├── job-batch-v1.json │ ├── jobcondition-batch-v1.json │ ├── joblist-batch-v1.json │ ├── jobspec-batch-v1.json │ ├── jobstatus-batch-v1.json │ ├── jobtemplatespec-batch-v1.json │ ├── jobtemplatespec-batch-v1beta1.json │ ├── json-apiextensions-v1.json │ ├── keytopath-v1.json │ ├── labelselector-meta-v1.json │ ├── labelselectorrequirement-meta-v1.json │ ├── lease-coordination-v1.json │ ├── leaselist-coordination-v1.json │ ├── leasespec-coordination-v1.json │ ├── lifecycle-v1.json │ ├── lifecyclehandler-v1.json │ ├── limitedprioritylevelconfiguration-flowcontrol-v1beta1.json │ ├── limitedprioritylevelconfiguration-flowcontrol-v1beta2.json │ ├── limitrange-v1.json │ ├── limitrangeitem-v1.json │ ├── limitrangelist-v1.json │ ├── limitrangespec-v1.json │ ├── limitresponse-flowcontrol-v1beta1.json │ ├── limitresponse-flowcontrol-v1beta2.json │ ├── listmeta-meta-v1.json │ ├── loadbalanceringress-v1.json │ ├── loadbalancerstatus-v1.json │ ├── localobjectreference-v1.json │ ├── localsubjectaccessreview-authorization-v1.json │ ├── localvolumesource-v1.json │ ├── managedfieldsentry-meta-v1.json │ ├── metricidentifier-autoscaling-v2.json │ ├── metricidentifier-autoscaling-v2beta2.json │ ├── metricspec-autoscaling-v2.json │ ├── metricspec-autoscaling-v2beta1.json │ ├── metricspec-autoscaling-v2beta2.json │ ├── metricstatus-autoscaling-v2.json │ ├── metricstatus-autoscaling-v2beta1.json │ ├── metricstatus-autoscaling-v2beta2.json │ ├── metrictarget-autoscaling-v2.json │ ├── metrictarget-autoscaling-v2beta2.json │ ├── metricvaluestatus-autoscaling-v2.json │ ├── metricvaluestatus-autoscaling-v2beta2.json │ ├── microtime-meta-v1.json │ ├── mutatingwebhook-admissionregistration-v1.json │ ├── mutatingwebhookconfiguration-admissionregistration-v1.json │ ├── mutatingwebhookconfigurationlist-admissionregistration-v1.json │ ├── namespace-v1.json │ ├── namespacecondition-v1.json │ ├── namespacelist-v1.json │ ├── namespacespec-v1.json │ ├── namespacestatus-v1.json │ ├── networkpolicy-networking-v1.json │ ├── networkpolicyegressrule-networking-v1.json │ ├── networkpolicyingressrule-networking-v1.json │ ├── networkpolicylist-networking-v1.json │ ├── networkpolicypeer-networking-v1.json │ ├── networkpolicyport-networking-v1.json │ ├── networkpolicyspec-networking-v1.json │ ├── networkpolicystatus-networking-v1.json │ ├── nfsvolumesource-v1.json │ ├── node-v1.json │ ├── nodeaddress-v1.json │ ├── nodeaffinity-v1.json │ ├── nodecondition-v1.json │ ├── nodeconfigsource-v1.json │ ├── nodeconfigstatus-v1.json │ ├── nodedaemonendpoints-v1.json │ ├── nodelist-v1.json │ ├── nodeselector-v1.json │ ├── nodeselectorrequirement-v1.json │ ├── nodeselectorterm-v1.json │ ├── nodespec-v1.json │ ├── nodestatus-v1.json │ ├── nodesysteminfo-v1.json │ ├── nonresourceattributes-authorization-v1.json │ ├── nonresourcepolicyrule-flowcontrol-v1beta1.json │ ├── nonresourcepolicyrule-flowcontrol-v1beta2.json │ ├── nonresourcerule-authorization-v1.json │ ├── objectfieldselector-v1.json │ ├── objectmeta-meta-v1.json │ ├── objectmetricsource-autoscaling-v2.json │ ├── objectmetricsource-autoscaling-v2beta1.json │ ├── objectmetricsource-autoscaling-v2beta2.json │ ├── objectmetricstatus-autoscaling-v2.json │ ├── objectmetricstatus-autoscaling-v2beta1.json │ ├── objectmetricstatus-autoscaling-v2beta2.json │ ├── objectreference-v1.json │ ├── overhead-node-v1.json │ ├── overhead-node-v1beta1.json │ ├── ownerreference-meta-v1.json │ ├── patch-meta-v1.json │ ├── persistentvolume-v1.json │ ├── persistentvolumeclaim-v1.json │ ├── persistentvolumeclaimcondition-v1.json │ ├── persistentvolumeclaimlist-v1.json │ ├── persistentvolumeclaimspec-v1.json │ ├── persistentvolumeclaimstatus-v1.json │ ├── persistentvolumeclaimtemplate-v1.json │ ├── persistentvolumeclaimvolumesource-v1.json │ ├── persistentvolumelist-v1.json │ ├── persistentvolumespec-v1.json │ ├── persistentvolumestatus-v1.json │ ├── photonpersistentdiskvolumesource-v1.json │ ├── pod-v1.json │ ├── podaffinity-v1.json │ ├── podaffinityterm-v1.json │ ├── podantiaffinity-v1.json │ ├── podcondition-v1.json │ ├── poddisruptionbudget-policy-v1.json │ ├── poddisruptionbudget-policy-v1beta1.json │ ├── poddisruptionbudgetlist-policy-v1.json │ ├── poddisruptionbudgetlist-policy-v1beta1.json │ ├── poddisruptionbudgetspec-policy-v1.json │ ├── poddisruptionbudgetspec-policy-v1beta1.json │ ├── poddisruptionbudgetstatus-policy-v1.json │ ├── poddisruptionbudgetstatus-policy-v1beta1.json │ ├── poddnsconfig-v1.json │ ├── poddnsconfigoption-v1.json │ ├── podip-v1.json │ ├── podlist-v1.json │ ├── podos-v1.json │ ├── podreadinessgate-v1.json │ ├── podsecuritycontext-v1.json │ ├── podsecuritypolicy-policy-v1beta1.json │ ├── podsecuritypolicylist-policy-v1beta1.json │ ├── podsecuritypolicyspec-policy-v1beta1.json │ ├── podsmetricsource-autoscaling-v2.json │ ├── podsmetricsource-autoscaling-v2beta1.json │ ├── podsmetricsource-autoscaling-v2beta2.json │ ├── podsmetricstatus-autoscaling-v2.json │ ├── podsmetricstatus-autoscaling-v2beta1.json │ ├── podsmetricstatus-autoscaling-v2beta2.json │ ├── podspec-v1.json │ ├── podstatus-v1.json │ ├── podtemplate-v1.json │ ├── podtemplatelist-v1.json │ ├── podtemplatespec-v1.json │ ├── policyrule-rbac-v1.json │ ├── policyruleswithsubjects-flowcontrol-v1beta1.json │ ├── policyruleswithsubjects-flowcontrol-v1beta2.json │ ├── portstatus-v1.json │ ├── portworxvolumesource-v1.json │ ├── preconditions-meta-v1.json │ ├── preferredschedulingterm-v1.json │ ├── priorityclass-scheduling-v1.json │ ├── priorityclasslist-scheduling-v1.json │ ├── prioritylevelconfiguration-flowcontrol-v1beta1.json │ ├── prioritylevelconfiguration-flowcontrol-v1beta2.json │ ├── prioritylevelconfigurationcondition-flowcontrol-v1beta1.json │ ├── prioritylevelconfigurationcondition-flowcontrol-v1beta2.json │ ├── prioritylevelconfigurationlist-flowcontrol-v1beta1.json │ ├── prioritylevelconfigurationlist-flowcontrol-v1beta2.json │ ├── prioritylevelconfigurationreference-flowcontrol-v1beta1.json │ ├── prioritylevelconfigurationreference-flowcontrol-v1beta2.json │ ├── prioritylevelconfigurationspec-flowcontrol-v1beta1.json │ ├── prioritylevelconfigurationspec-flowcontrol-v1beta2.json │ ├── prioritylevelconfigurationstatus-flowcontrol-v1beta1.json │ ├── prioritylevelconfigurationstatus-flowcontrol-v1beta2.json │ ├── probe-v1.json │ ├── projectedvolumesource-v1.json │ ├── quantity-resource.json │ ├── queuingconfiguration-flowcontrol-v1beta1.json │ ├── queuingconfiguration-flowcontrol-v1beta2.json │ ├── quobytevolumesource-v1.json │ ├── rawextension-pkg-runtime.json │ ├── rbdpersistentvolumesource-v1.json │ ├── rbdvolumesource-v1.json │ ├── replicaset-apps-v1.json │ ├── replicasetcondition-apps-v1.json │ ├── replicasetlist-apps-v1.json │ ├── replicasetspec-apps-v1.json │ ├── replicasetstatus-apps-v1.json │ ├── replicationcontroller-v1.json │ ├── replicationcontrollercondition-v1.json │ ├── replicationcontrollerlist-v1.json │ ├── replicationcontrollerspec-v1.json │ ├── replicationcontrollerstatus-v1.json │ ├── resourceattributes-authorization-v1.json │ ├── resourcefieldselector-v1.json │ ├── resourcemetricsource-autoscaling-v2.json │ ├── resourcemetricsource-autoscaling-v2beta1.json │ ├── resourcemetricsource-autoscaling-v2beta2.json │ ├── resourcemetricstatus-autoscaling-v2.json │ ├── resourcemetricstatus-autoscaling-v2beta1.json │ ├── resourcemetricstatus-autoscaling-v2beta2.json │ ├── resourcepolicyrule-flowcontrol-v1beta1.json │ ├── resourcepolicyrule-flowcontrol-v1beta2.json │ ├── resourcequota-v1.json │ ├── resourcequotalist-v1.json │ ├── resourcequotaspec-v1.json │ ├── resourcequotastatus-v1.json │ ├── resourcerequirements-v1.json │ ├── resourcerule-authorization-v1.json │ ├── role-rbac-v1.json │ ├── rolebinding-rbac-v1.json │ ├── rolebindinglist-rbac-v1.json │ ├── rolelist-rbac-v1.json │ ├── roleref-rbac-v1.json │ ├── rollingupdatedaemonset-apps-v1.json │ ├── rollingupdatedeployment-apps-v1.json │ ├── rollingupdatestatefulsetstrategy-apps-v1.json │ ├── rulewithoperations-admissionregistration-v1.json │ ├── runasgroupstrategyoptions-policy-v1beta1.json │ ├── runasuserstrategyoptions-policy-v1beta1.json │ ├── runtimeclass-node-v1.json │ ├── runtimeclass-node-v1beta1.json │ ├── runtimeclasslist-node-v1.json │ ├── runtimeclasslist-node-v1beta1.json │ ├── runtimeclassstrategyoptions-policy-v1beta1.json │ ├── scale-autoscaling-v1.json │ ├── scaleiopersistentvolumesource-v1.json │ ├── scaleiovolumesource-v1.json │ ├── scalespec-autoscaling-v1.json │ ├── scalestatus-autoscaling-v1.json │ ├── scheduling-node-v1.json │ ├── scheduling-node-v1beta1.json │ ├── scopedresourceselectorrequirement-v1.json │ ├── scopeselector-v1.json │ ├── seccompprofile-v1.json │ ├── secret-v1.json │ ├── secretenvsource-v1.json │ ├── secretkeyselector-v1.json │ ├── secretlist-v1.json │ ├── secretprojection-v1.json │ ├── secretreference-v1.json │ ├── secretvolumesource-v1.json │ ├── securitycontext-v1.json │ ├── selfsubjectaccessreview-authorization-v1.json │ ├── selfsubjectaccessreviewspec-authorization-v1.json │ ├── selfsubjectrulesreview-authorization-v1.json │ ├── selfsubjectrulesreviewspec-authorization-v1.json │ ├── selinuxoptions-v1.json │ ├── selinuxstrategyoptions-policy-v1beta1.json │ ├── serveraddressbyclientcidr-meta-v1.json │ ├── serverstorageversion-apiserverinternal-v1alpha1.json │ ├── service-v1.json │ ├── serviceaccount-v1.json │ ├── serviceaccountlist-v1.json │ ├── serviceaccountsubject-flowcontrol-v1beta1.json │ ├── serviceaccountsubject-flowcontrol-v1beta2.json │ ├── serviceaccounttokenprojection-v1.json │ ├── servicebackendport-networking-v1.json │ ├── servicelist-v1.json │ ├── serviceport-v1.json │ ├── servicereference-admissionregistration-v1.json │ ├── servicereference-apiextensions-v1.json │ ├── servicereference-apiregistration-v1.json │ ├── servicespec-v1.json │ ├── servicestatus-v1.json │ ├── sessionaffinityconfig-v1.json │ ├── statefulset-apps-v1.json │ ├── statefulsetcondition-apps-v1.json │ ├── statefulsetlist-apps-v1.json │ ├── statefulsetpersistentvolumeclaimretentionpolicy-apps-v1.json │ ├── statefulsetspec-apps-v1.json │ ├── statefulsetstatus-apps-v1.json │ ├── statefulsetupdatestrategy-apps-v1.json │ ├── status-meta-v1.json │ ├── statuscause-meta-v1.json │ ├── statusdetails-meta-v1.json │ ├── storageclass-storage-v1.json │ ├── storageclasslist-storage-v1.json │ ├── storageospersistentvolumesource-v1.json │ ├── storageosvolumesource-v1.json │ ├── storageversion-apiserverinternal-v1alpha1.json │ ├── storageversioncondition-apiserverinternal-v1alpha1.json │ ├── storageversionlist-apiserverinternal-v1alpha1.json │ ├── storageversionspec-apiserverinternal-v1alpha1.json │ ├── storageversionstatus-apiserverinternal-v1alpha1.json │ ├── subject-flowcontrol-v1beta1.json │ ├── subject-flowcontrol-v1beta2.json │ ├── subject-rbac-v1.json │ ├── subjectaccessreview-authorization-v1.json │ ├── subjectaccessreviewspec-authorization-v1.json │ ├── subjectaccessreviewstatus-authorization-v1.json │ ├── subjectrulesreviewstatus-authorization-v1.json │ ├── supplementalgroupsstrategyoptions-policy-v1beta1.json │ ├── sysctl-v1.json │ ├── taint-v1.json │ ├── tcpsocketaction-v1.json │ ├── time-meta-v1.json │ ├── tokenrequest-authentication-v1.json │ ├── tokenrequest-storage-v1.json │ ├── tokenrequestspec-authentication-v1.json │ ├── tokenrequeststatus-authentication-v1.json │ ├── tokenreview-authentication-v1.json │ ├── tokenreviewspec-authentication-v1.json │ ├── tokenreviewstatus-authentication-v1.json │ ├── toleration-v1.json │ ├── topologyselectorlabelrequirement-v1.json │ ├── topologyselectorterm-v1.json │ ├── topologyspreadconstraint-v1.json │ ├── typedlocalobjectreference-v1.json │ ├── uncountedterminatedpods-batch-v1.json │ ├── userinfo-authentication-v1.json │ ├── usersubject-flowcontrol-v1beta1.json │ ├── usersubject-flowcontrol-v1beta2.json │ ├── validatingwebhook-admissionregistration-v1.json │ ├── validatingwebhookconfiguration-admissionregistration-v1.json │ ├── validatingwebhookconfigurationlist-admissionregistration-v1.json │ ├── validationrule-apiextensions-v1.json │ ├── volume-v1.json │ ├── volumeattachment-storage-v1.json │ ├── volumeattachmentlist-storage-v1.json │ ├── volumeattachmentsource-storage-v1.json │ ├── volumeattachmentspec-storage-v1.json │ ├── volumeattachmentstatus-storage-v1.json │ ├── volumedevice-v1.json │ ├── volumeerror-storage-v1.json │ ├── volumemount-v1.json │ ├── volumenodeaffinity-v1.json │ ├── volumenoderesources-storage-v1.json │ ├── volumeprojection-v1.json │ ├── vspherevirtualdiskvolumesource-v1.json │ ├── watchevent-meta-v1.json │ ├── webhookclientconfig-admissionregistration-v1.json │ ├── webhookclientconfig-apiextensions-v1.json │ ├── webhookconversion-apiextensions-v1.json │ ├── weightedpodaffinityterm-v1.json │ └── windowssecuritycontextoptions-v1.json └── test ├── kotlin └── com │ └── redhat │ └── devtools │ └── intellij │ └── kubernetes │ ├── console │ ├── ConsoleOutputStreamTest.kt │ └── FailureCallbackOutputStreamTest.kt │ ├── editor │ ├── ClusterResourceTest.kt │ ├── EditorResourceSerializationTest.kt │ ├── EditorResourceStateTest.kt │ ├── EditorResourceTest.kt │ ├── EditorResourcesTest.kt │ ├── ResourceEditorFactoryTest.kt │ ├── ResourceEditorTabTitleProviderTest.kt │ ├── ResourceEditorTest.kt │ ├── ResourceFileTest.kt │ ├── describe │ │ ├── DescriberTestUtils.kt │ │ ├── DescriptionUtilsTest.kt │ │ ├── YAMLDescriptionTest.kt │ │ ├── describer │ │ │ ├── ContainerDescriberEnvironmentTest.kt │ │ │ ├── ContainerDescriberPortsTest.kt │ │ │ ├── ContainerDescriberProbesTest.kt │ │ │ ├── ContainerDescriberResourcesTest.kt │ │ │ ├── ContainerDescriberStatusTest.kt │ │ │ ├── ContainerDescriberTest.kt │ │ │ └── PodDescriberTest.kt │ │ └── paragraphs │ │ │ ├── ChapterTest.kt │ │ │ └── NamedSequenceTest.kt │ ├── inlay │ │ ├── Base64PresentationsTest.kt │ │ └── Base64ValueAdapterTest.kt │ ├── mocks │ │ ├── PsiElementMocks.kt │ │ └── ResourcePsiElementMocks.kt │ ├── notification │ │ └── NotificationsTest.kt │ └── util │ │ ├── DisposedStateTest.kt │ │ ├── FileEditorUtilsTest.kt │ │ ├── PersistentEditorValueTest.kt │ │ ├── ResourceEditorUtilsTest.kt │ │ ├── ResourcePsiElementUtilsTest.kt │ │ └── SelectorPsiElementUtilsTest.kt │ ├── model │ ├── AllContextsTest.kt │ ├── ProcessWatchesTest.kt │ ├── ResourceModelObservableTest.kt │ ├── ResourceModelTest.kt │ ├── ResourceWatchTest.kt │ ├── client │ │ ├── ClientAdapterTest.kt │ │ ├── ClientConfigTest.kt │ │ └── KubeConfigAdapterTest.kt │ ├── context │ │ ├── KubernetesContextTest.kt │ │ └── LazyOpenShiftContextTest.kt │ ├── dashboard │ │ └── KubernetesDashboardTest.kt │ ├── mocks │ │ ├── ClientMocks.kt │ │ ├── Fakes.kt │ │ ├── Mocks.kt │ │ ├── PodContainer.kt │ │ └── PodMocks.kt │ ├── resource │ │ ├── APIResourcesTest.kt │ │ ├── NonCachingSingleResourceOperatorTest.kt │ │ ├── ResourceIdentifierTest.kt │ │ ├── ResourceKindTest.kt │ │ └── kubernetes │ │ │ ├── EventForResourceTest.kt │ │ │ ├── KubernetesReplicasTest.kt │ │ │ ├── NamespacedPodsOperatorTest.kt │ │ │ ├── NamespacesOperatorTest.kt │ │ │ ├── OpenShiftReplicasTest.kt │ │ │ ├── OpenShiftReplicatorTest.kt │ │ │ ├── ReplicatorTest.kt │ │ │ └── custom │ │ │ ├── CustomResourceOperatorFactoryTest.kt │ │ │ └── NamespacedCustomResourceOperatorTest.kt │ └── util │ │ ├── ContainerUtilsTest.kt │ │ ├── ExceptionUtilsTest.kt │ │ ├── PodUtilsTest.kt │ │ ├── ResettableLazyPropertyTest.kt │ │ └── ResourceUtilsTest.kt │ ├── tree │ ├── DescriptorTest.kt │ ├── PluginXmlIconsTest.kt │ ├── TreeStructureExtensionTest.kt │ └── TreeUpdaterTest.kt │ └── usage │ ├── LabelsFilterTest.kt │ └── SelectorsFilterTest.kt └── resources ├── mockito-extensions └── org.mokito.plugins.MockMaker ├── tekton-pipeline-controller.json └── testing-editor.md /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | # Set update schedule for GitHub Actions and Gradle dependencies 2 | 3 | version: 2 4 | updates: 5 | # Updates for GitHub Actions 6 | - package-ecosystem: "github-actions" 7 | directory: "/" 8 | schedule: 9 | interval: "weekly" 10 | # Updates for Gradle dependencies 11 | - package-ecosystem: "gradle" 12 | directory: "/" 13 | schedule: 14 | interval: "weekly" -------------------------------------------------------------------------------- /.github/workflows/IJ-latest.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Gradle 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle 3 | 4 | name: Latest IJ 5 | 6 | on: 7 | schedule: 8 | - cron: "0 0 * * *" 9 | 10 | jobs: 11 | 12 | build: 13 | runs-on: ubuntu-latest 14 | 15 | steps: 16 | - uses: actions/checkout@v4 17 | - name: Set up JDK 17 18 | uses: actions/setup-java@v4 19 | with: 20 | java-version: 17 21 | distribution: 'temurin' 22 | cache: 'gradle' 23 | - name: Grant execute permission for gradlew 24 | run: chmod +x gradlew 25 | - name: Build with Gradle 26 | run: | 27 | LATEST_EAP_SNAPSHOT=$(./gradlew printProductsReleases | grep 'IC-' | head -n 1 | cut -d'-' -f2) 28 | ./gradlew build --continue -PplatformVersion=$LATEST_EAP_SNAPSHOT 29 | - uses: actions/upload-artifact@v4 30 | if: always() 31 | with: 32 | name: test-reports 33 | path: | 34 | build/test-results/**/*.xml 35 | build/jacoco/ 36 | -------------------------------------------------------------------------------- /.github/workflows/IJ.yml: -------------------------------------------------------------------------------- 1 | # This workflow will build a Java project with Gradle 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle 3 | 4 | name: Validate against IJ versions 5 | 6 | on: 7 | push: 8 | branches: [ main ] 9 | pull_request: 10 | branches: [ main ] 11 | 12 | jobs: 13 | validate: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | # Free GitHub Actions Environment Disk Space 18 | - name: Maximize Build Space 19 | uses: jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # main 20 | with: 21 | tool-cache: false 22 | large-packages: false 23 | 24 | - uses: actions/checkout@v4 25 | - name: Set up JDK 17 26 | uses: actions/setup-java@v4 27 | with: 28 | java-version: 17 29 | distribution: 'temurin' 30 | cache: 'gradle' 31 | - name: Grant execute permission for gradlew 32 | run: chmod +x gradlew 33 | - name: Build with Gradle 34 | run: ./gradlew build 35 | - name: Validate with Gradle 36 | run: | 37 | ./gradlew verifyPlugin 38 | REPORTS=$(cat ${{ github.workspace }}/build/reports/pluginVerifier/*/report.md | sed 's/^#/##/') 39 | echo "$REPORTS" >> $GITHUB_STEP_SUMMARY 40 | - name: Upload report 41 | uses: actions/upload-artifact@v4 42 | if: always() 43 | with: 44 | name: verifier-reports 45 | path: build/reports/pluginVerifier 46 | -------------------------------------------------------------------------------- /.github/workflows/conventionalCheck.yml: -------------------------------------------------------------------------------- 1 | name: "Conventional Commits PR Check" 2 | 3 | on: 4 | pull_request_target: 5 | types: 6 | - opened 7 | - edited 8 | - synchronize 9 | 10 | jobs: 11 | main: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 #v5.5.3 15 | env: 16 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 17 | -------------------------------------------------------------------------------- /.github/workflows/dependency-submission.yml: -------------------------------------------------------------------------------- 1 | name: Dependency Submission 2 | 3 | on: 4 | push: 5 | branches: [ 'main' ] 6 | 7 | permissions: 8 | contents: write 9 | 10 | jobs: 11 | dependency-submission: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v4 15 | - uses: actions/setup-java@v4 16 | with: 17 | distribution: temurin 18 | java-version: 17 19 | 20 | - name: Generate and submit dependency graph 21 | uses: gradle/actions/dependency-submission@v3 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | .idea 3 | *.iml 4 | build 5 | .gradle 6 | out 7 | 8 | /.intellijPlatform/ 9 | /.kotlin/ 10 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # How to contribute 2 | 3 | Contributions are essential for keeping this plugin great. 4 | We try to keep it as easy as possible to contribute changes and we are 5 | open to suggestions for making it even easier. 6 | There are only a few guidelines that we need contributors to follow. 7 | 8 | ## First Time Setup 9 | 1. Install prerequisites: 10 | * [Java Development Kit](https://adoptopenjdk.net/) 11 | 2. Fork and clone the repository 12 | 3. `cd intellij-kubernetes` 13 | 4. Import the folder as a project in JetBrains IDEA 14 | 15 | ## Run the plugin locally 16 | 17 | 1. From root folder, run the below command. 18 | ```bash 19 | $ ./gradlew runIde 20 | ``` 21 | 22 | 23 | 2. Once the plugin is installed and reloaded, there will be a Kubernetes Tab in the Tool Windows list (left). 24 | 25 | > If you have any questions or run into any problems, please post an issue - we'll be very happy to help. 26 | 27 | ### Certificate of Origin 28 | 29 | By contributing to this project you agree to the Developer Certificate of 30 | Origin (DCO). This document was created by the Linux Kernel community and is a 31 | simple statement that you, as a contributor, have the legal right to make the 32 | contribution. See the [DCO](DCO) file for details. 33 | -------------------------------------------------------------------------------- /DCO: -------------------------------------------------------------------------------- 1 | Developer Certificate of Origin 2 | Version 1.1 3 | 4 | Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 5 | 1 Letterman Drive 6 | Suite D4700 7 | San Francisco, CA, 94129 8 | 9 | Everyone is permitted to copy and distribute verbatim copies of this 10 | license document, but changing it is not allowed. 11 | 12 | 13 | Developer's Certificate of Origin 1.1 14 | 15 | By making a contribution to this project, I certify that: 16 | 17 | (a) The contribution was created in whole or in part by me and I 18 | have the right to submit it under the open source license 19 | indicated in the file; or 20 | 21 | (b) The contribution is based upon previous work that, to the best 22 | of my knowledge, is covered under an appropriate open source 23 | license and I have the right under that license to submit that 24 | work with modifications, whether created in whole or in part 25 | by me, under the same open source license (unless I am 26 | permitted to submit under a different license), as indicated 27 | in the file; or 28 | 29 | (c) The contribution was provided directly to me by some other 30 | person who certified (a), (b) or (c) and I have not modified 31 | it. 32 | 33 | (d) I understand and agree that this project and the contribution 34 | are public and that a record of the contribution (including all 35 | personal information I submit with it, including my sign-off) is 36 | maintained indefinitely and may be redistributed consistent with 37 | this project or the open source license(s) involved. 38 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | ############################################ 2 | # Intellij-kubernetes run build minikube # 3 | ############################################ 4 | 5 | MOD_FLAGS := $(shell (go version | grep -q -E "1\.1[1-9]") && echo -mod=vendor) 6 | CMDS := $(shell go list $(MOD_FLAGS) ./cmd/...) 7 | 8 | build-linux: build_cmd=build 9 | build-linux: arch_flags=GOOS=linux GOARCH=386 10 | build-linux: clean $(CMDS) 11 | 12 | clean: 13 | @rm -rf cover.out 14 | @rm -rf bin 15 | @rm -rf test/e2e/resources 16 | @rm -rf test/e2e/test-resources 17 | @rm -rf test/e2e/log 18 | @rm -rf e2e.namespace 19 | 20 | .PHONY: run-local 21 | run-local: build-linux 22 | rm -rf build 23 | . ./scripts/build_local.sh 24 | -------------------------------------------------------------------------------- /USAGE_DATA.md: -------------------------------------------------------------------------------- 1 | ## [Kubernetes by Red Hat](https://github.com/redhat-developer/intellij-kubernetes) 2 | 3 | ### Usage Data 4 | 5 | * when plugin is started 6 | * when connecting to a cluster 7 | * Kubernetes version 8 | * flag for Kubernetes/OpenShift cluster 9 | * OpenShift version 10 | * action duration time 11 | * when switching current context/namespace 12 | * action duration time 13 | * when expanding a resource category in the tree 14 | * resource kind 15 | * action duration time 16 | * when opening a resource editor 17 | * resource kind 18 | * action duration time 19 | * when pushing/pulling the editor to/from cluster 20 | * resource kind 21 | * action duration time 22 | * when deleting a resource 23 | * resource kind 24 | * action duration time 25 | * when following logs 26 | * resource kind 27 | * action duration time 28 | * when creating a terminal 29 | * resource kind 30 | * action duration time 31 | * when plugin is shut down 32 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | projectVersion=1.6.2-SNAPSHOT 2 | jetBrainsToken=invalid 3 | jetBrainsChannel=stable 4 | 5 | # IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin.html#setting-up-intellij-platform 6 | platformVersion=2023.1 7 | 8 | # Gradle Releases -> https://github.com/gradle/gradle/releases 9 | gradleVersion=8.5 10 | 11 | # Plugin Dependencies -> https://plugins.jetbrains.com/docs/intellij/plugin-dependencies.html#dependency-declaration-in-pluginxml 12 | platformBundledPlugins=org.jetbrains.plugins.yaml, org.jetbrains.plugins.terminal 13 | platformPlugins=com.redhat.devtools.intellij.telemetry:1.2.1.62 14 | 15 | # Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html 16 | pluginSinceBuild=231 17 | 18 | # Opt-out flag for bundling Kotlin standard library -> https://jb.gg/intellij-platform-kotlin-stdlib 19 | kotlin.stdlib.default.dependency=false 20 | 21 | # Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html 22 | org.gradle.configuration-cache=true 23 | 24 | # Enable Gradle Build Cache -> https://docs.gradle.org/current/userguide/build_cache.html 25 | org.gradle.caching=true 26 | 27 | kotlin.daemon.jvm.options=-Xmx2g 28 | org.gradle.jvmargs=-Xmx2g 29 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /images/categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/categories.png -------------------------------------------------------------------------------- /images/describe-pod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/describe-pod.png -------------------------------------------------------------------------------- /images/editor-bas64-encoded-value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-bas64-encoded-value.png -------------------------------------------------------------------------------- /images/editor-diff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-diff.png -------------------------------------------------------------------------------- /images/editor-labels-matching-selectors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-labels-matching-selectors.png -------------------------------------------------------------------------------- /images/editor-pull-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-pull-push.png -------------------------------------------------------------------------------- /images/editor-pulled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-pulled.png -------------------------------------------------------------------------------- /images/editor-push.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-push.gif -------------------------------------------------------------------------------- /images/editor-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-push.png -------------------------------------------------------------------------------- /images/editor-schema.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-schema.png -------------------------------------------------------------------------------- /images/editor-toolbar-diff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-toolbar-diff.png -------------------------------------------------------------------------------- /images/editor-toolbar-pull.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-toolbar-pull.png -------------------------------------------------------------------------------- /images/editor-toolbar-push.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor-toolbar-push.png -------------------------------------------------------------------------------- /images/editor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/editor.png -------------------------------------------------------------------------------- /images/logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/logs.png -------------------------------------------------------------------------------- /images/pod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/pod.png -------------------------------------------------------------------------------- /images/set-replicas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/set-replicas.png -------------------------------------------------------------------------------- /images/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/images/terminal.png -------------------------------------------------------------------------------- /scripts/build_local.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Note: run from root 4 | # This is used to run and connect minikube cluster 5 | 6 | pgrep -f "[m]inikube" >/dev/null || minikube start || { echo 'Cannot start minikube.'; exit 1; } 7 | eval "$(minikube docker-env)" || { echo 'Cannot switch to minikube docker'; exit 1; } 8 | kubectl config use-context minikube 9 | 10 | # Check if cluster is in config, if not - here will be the empty labels 11 | kubectl config view 12 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "intellij-kubernetes" 2 | plugins { 3 | id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0" 4 | } 5 | 6 | -------------------------------------------------------------------------------- /src/it/java/org/jboss/tools/intellij/kubernetes/tests/ClusterConnectedTest.java: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2021 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at https://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package org.jboss.tools.intellij.kubernetes.tests; 12 | 13 | import com.intellij.remoterobot.fixtures.ComponentFixture; 14 | 15 | import static org.junit.jupiter.api.Assertions.assertTrue; 16 | 17 | /** 18 | * @author olkornii@redhat.com 19 | */ 20 | public class ClusterConnectedTest extends AbstractKubernetesTest{ 21 | public static void checkClusterConnected(ComponentFixture kubernetesViewTree){ 22 | String clusterText = kubernetesViewTree.findAllText().get(0).getText(); 23 | assertTrue(clusterText.contains("minikube")); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/CompletableFutureUtils.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2023 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes 12 | 13 | import com.intellij.openapi.application.ApplicationManager 14 | import java.util.concurrent.Executor 15 | 16 | object CompletableFutureUtils { 17 | val UI_EXECUTOR = Executor { runnable: Runnable -> 18 | ApplicationManager.getApplication().invokeLater { runnable.run() } 19 | } 20 | 21 | val PLATFORM_EXECUTOR = Executor { runnable: Runnable -> 22 | ApplicationManager.getApplication().executeOnPooledThread { runnable.run() } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/actions/UseResourceAction.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.actions 12 | 13 | import com.redhat.devtools.intellij.common.actions.StructureTreeAction 14 | import io.fabric8.kubernetes.api.model.HasMetadata 15 | 16 | abstract class UseResourceAction(filter: Class) : StructureTreeAction(false, filter) { 17 | 18 | override fun isVisible(selected: Array?): Boolean { 19 | return !selected.isNullOrEmpty() 20 | && super.isVisible(selected) 21 | } 22 | 23 | override fun isVisible(selected: Any?): Boolean { 24 | if (!super.isVisible(selected)) { 25 | return false 26 | } 27 | val element = selected?.getElement() ?: return false 28 | val isCurrent = getResourceModel()?.isCurrentNamespace(element) ?: return false 29 | return !isCurrent 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/console/ConsolesToolWindowFactory.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.console 12 | 13 | import com.intellij.openapi.project.DumbAware 14 | import com.intellij.openapi.project.Project 15 | import com.intellij.openapi.wm.ToolWindow 16 | import com.intellij.openapi.wm.ToolWindowFactory 17 | 18 | 19 | class ConsolesToolWindowFactory: ToolWindowFactory, DumbAware { 20 | 21 | override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) { 22 | toolWindow.stripeTitle = "Kubernetes Consoles" 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/console/FailureCallbackOutputStream.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2022 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.console 12 | 13 | import com.intellij.execution.ui.ConsoleView 14 | 15 | class FailureCallbackOutputStream(private val onFailure: (message: String) -> Unit, terminal: ConsoleView): ConsoleOutputStream(terminal) { 16 | 17 | companion object { 18 | private val failureExpression = Regex("\"kind\":\"Status\".+\"status\":\"Failure\".+\"message\":(\"[^,]+)") 19 | } 20 | 21 | override fun processOutput(output: String): String { 22 | val matches = failureExpression.find(output) 23 | val message = matches?.groups?.get(1)?.value 24 | if (message != null) { 25 | onFailure.invoke(cleanup(message)) 26 | } 27 | return output 28 | } 29 | 30 | private fun cleanup(message: String): String { 31 | val cleaned = message.replace("\"", "") // remove " 32 | return cleaned.replace("\\", "") // remove \ 33 | } 34 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/KubernetesEditorsTabTitleProvider.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.editor 12 | 13 | import com.intellij.openapi.fileEditor.impl.EditorTabTitleProvider 14 | import com.intellij.openapi.fileEditor.impl.UniqueNameEditorTabTitleProvider 15 | import com.intellij.openapi.project.Project 16 | import com.intellij.openapi.vfs.VirtualFile 17 | import com.redhat.devtools.intellij.kubernetes.editor.describe.DescriptionViewerTabTitleProvider 18 | 19 | open class KubernetesEditorsTabTitleProvider( 20 | private val fallback: EditorTabTitleProvider = UniqueNameEditorTabTitleProvider() 21 | ) : EditorTabTitleProvider { 22 | 23 | override fun getEditorTabTitle(project: Project, file: VirtualFile): String? { 24 | return ResourceEditorTabTitleProvider().getEditorTabTitle(project, file) 25 | ?: DescriptionViewerTabTitleProvider().getEditorTabTitle(project, file) 26 | ?: fallback.getEditorTabTitle(project, file) 27 | } 28 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/describe/Description.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.editor.describe 12 | 13 | import com.redhat.devtools.intellij.kubernetes.editor.describe.paragraphs.Chapter 14 | 15 | abstract class Description: Chapter("Document") { 16 | 17 | abstract fun toText(): String 18 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/describe/describer/Describer.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.editor.describe.describer 12 | 13 | import com.redhat.devtools.intellij.kubernetes.editor.describe.paragraphs.Chapter 14 | 15 | fun interface Describer { 16 | fun addTo(chapter: Chapter): Chapter 17 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/describe/paragraphs/HasChildren.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.editor.describe.paragraphs 12 | 13 | open class HasChildren protected constructor(title: String, children: List = emptyList()): Paragraph(title) { 14 | 15 | val children = mutableListOf() 16 | 17 | init { 18 | this.children.addAll(children) 19 | } 20 | 21 | override fun equals(other: Any?): Boolean { 22 | if (this === other) return true 23 | if (other !is HasChildren<*>) return false 24 | if (!super.equals(other)) return false 25 | 26 | if (children != other.children) return false 27 | 28 | return true 29 | } 30 | 31 | override fun hashCode(): Int { 32 | var result = super.hashCode() 33 | result = 31 * result + children.hashCode() 34 | return result 35 | } 36 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/describe/paragraphs/NamedSequence.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.editor.describe.paragraphs 12 | 13 | class NamedSequence(title: String, children: List = emptyList()): HasChildren(title, children) { 14 | 15 | fun addIfExists(value: Any?): NamedSequence { 16 | if (value == null 17 | || (value is String && value.isBlank())) { 18 | return this 19 | } 20 | children.add(value) 21 | return this 22 | } 23 | 24 | fun addIfExists(values: List?): NamedSequence { 25 | if (values.isNullOrEmpty()) { 26 | return this 27 | } 28 | values.forEach { value -> addIfExists(value) } 29 | return this 30 | } 31 | 32 | override fun equals(other: Any?): Boolean { 33 | if (this === other) return true 34 | if (other !is NamedSequence) return false 35 | if (!super.equals(other)) return false 36 | return true 37 | } 38 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/describe/paragraphs/NamedValue.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.editor.describe.paragraphs 12 | 13 | class NamedValue(title: String, val value: Any?): Paragraph(title) { 14 | 15 | override fun equals(other: Any?): Boolean { 16 | if (this === other) return true 17 | if (other !is NamedValue) return false 18 | if (!super.equals(other)) return false 19 | 20 | if (value != other.value) return false 21 | 22 | return true 23 | } 24 | 25 | override fun hashCode(): Int { 26 | var result = super.hashCode() 27 | result = 31 * result + (value?.hashCode() ?: 0) 28 | return result 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/describe/paragraphs/Paragraph.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.editor.describe.paragraphs 12 | 13 | abstract class Paragraph(val title: String) { 14 | 15 | override fun equals(other: Any?): Boolean { 16 | if (this === other) return true 17 | if (other !is Paragraph) return false 18 | 19 | if (title != other.title) return false 20 | 21 | return true 22 | } 23 | 24 | override fun hashCode(): Int { 25 | return title.hashCode() 26 | } 27 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/notification/NotificationActions.kt: -------------------------------------------------------------------------------- 1 | package com.redhat.devtools.intellij.kubernetes.editor.notification 2 | 3 | import com.intellij.ui.EditorNotificationPanel 4 | import com.redhat.devtools.intellij.kubernetes.editor.actions.DiffAction 5 | import com.redhat.devtools.intellij.kubernetes.editor.actions.PullAction 6 | import com.redhat.devtools.intellij.kubernetes.editor.actions.PushAllAction 7 | import com.redhat.devtools.intellij.kubernetes.editor.actions.PushModifiedAction 8 | 9 | fun addPush(all: Boolean, panel: EditorNotificationPanel) { 10 | if (all) { 11 | panel.createActionLabel("Push", PushAllAction.ID) 12 | } else { 13 | panel.createActionLabel("Push", PushModifiedAction.ID) 14 | } 15 | } 16 | 17 | fun addPull(panel: EditorNotificationPanel) { 18 | panel.createActionLabel("Pull", PullAction.ID) 19 | } 20 | 21 | fun addHide(panel: EditorNotificationPanel, closeAction: (() -> Unit)?) { 22 | if (closeAction != null) { 23 | panel.setCloseAction(closeAction) 24 | } 25 | } 26 | 27 | fun addDiff(panel: EditorNotificationPanel) { 28 | panel.createActionLabel("Diff", DiffAction.ID) 29 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/Notification.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model 12 | 13 | import com.intellij.notification.NotificationDisplayType 14 | import com.intellij.notification.NotificationType 15 | import com.redhat.devtools.intellij.common.compat.NotificationGroupFactory 16 | 17 | class Notification { 18 | 19 | companion object { 20 | private val NOTIFICATION_GROUP = NotificationGroupFactory.create( 21 | "Kubernetes Notification Group", NotificationDisplayType.BALLOON, true) 22 | } 23 | 24 | fun error(title: String, content: String) { 25 | NOTIFICATION_GROUP 26 | .createNotification(content, NotificationType.ERROR) 27 | .apply { setTitle(title) } 28 | .notify(null) 29 | } 30 | 31 | fun info(title: String, content: String) { 32 | NOTIFICATION_GROUP 33 | .createNotification(content, NotificationType.INFORMATION) 34 | .apply { setTitle(title) } 35 | .notify(null) 36 | } 37 | 38 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/context/Context.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.context 12 | 13 | import com.redhat.devtools.intellij.kubernetes.model.util.toMessage 14 | import io.fabric8.kubernetes.api.model.NamedContext 15 | 16 | interface IContext { 17 | val active: Boolean 18 | val name: String? 19 | val namespace: String? 20 | } 21 | 22 | open class Context(protected val context: NamedContext): IContext { 23 | override val active: Boolean = false 24 | override val name: String? 25 | get() = context.name 26 | override val namespace: String? 27 | get() = context.context?.namespace 28 | } 29 | 30 | class KubeConfigError(error: Exception? = null): IContext { 31 | override val active: Boolean = false 32 | override val name: String = "Configuration error: ${toMessage(error)}" 33 | override val namespace: String? = null 34 | } 35 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/resource/IResourceOperatorFactory.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.resource 12 | 13 | import io.fabric8.kubernetes.api.model.HasMetadata 14 | import io.fabric8.kubernetes.client.KubernetesClient 15 | 16 | interface IResourceOperatorFactory> { 17 | fun create(client: C): P 18 | } 19 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/resource/openshift/RoutesOperator.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2023 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.resource.openshift 12 | 13 | import com.redhat.devtools.intellij.kubernetes.model.client.ClientAdapter 14 | import com.redhat.devtools.intellij.kubernetes.model.resource.NamespacedOperation 15 | import com.redhat.devtools.intellij.kubernetes.model.resource.NamespacedResourceOperator 16 | import com.redhat.devtools.intellij.kubernetes.model.resource.ResourceKind 17 | import io.fabric8.openshift.api.model.Route 18 | import io.fabric8.openshift.client.OpenShiftClient 19 | 20 | class RoutesOperator(client: ClientAdapter) 21 | : NamespacedResourceOperator(client.get()) { 22 | 23 | companion object { 24 | val KIND = ResourceKind.create(Route::class.java) 25 | } 26 | 27 | override val kind = KIND 28 | 29 | override fun getOperation(): NamespacedOperation { 30 | return client.routes() 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/util/KubernetesClientExceptionExtensions.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.util 12 | 13 | import io.fabric8.kubernetes.client.KubernetesClientException 14 | import java.net.HttpURLConnection 15 | 16 | fun KubernetesClientException.isNotFound(): Boolean { 17 | return code == HttpURLConnection.HTTP_NOT_FOUND 18 | } 19 | 20 | fun KubernetesClientException.isForbidden(): Boolean { 21 | return code == HttpURLConnection.HTTP_FORBIDDEN 22 | } 23 | 24 | fun KubernetesClientException.isUnauthorized(): Boolean { 25 | return code == HttpURLConnection.HTTP_UNAUTHORIZED 26 | } 27 | 28 | fun KubernetesClientException.isUnsupported(): Boolean { 29 | return code == HttpURLConnection.HTTP_UNSUPPORTED_TYPE 30 | } 31 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/util/KubernetesClientExceptionUtils.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2023 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.util 12 | 13 | import io.fabric8.kubernetes.api.model.Status 14 | import io.fabric8.kubernetes.client.KubernetesClientException 15 | 16 | object KubernetesClientExceptionUtils { 17 | 18 | fun statusMessage(t: Throwable?): String? { 19 | return status(t)?.message 20 | } 21 | 22 | fun status(t: Throwable?): Status? { 23 | return if (t is KubernetesClientException) { 24 | t.status 25 | } else { 26 | null 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/util/MultiResourceException.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.util 12 | 13 | class MultiResourceException(message: String, val causes: Collection): RuntimeException(message) -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/util/PluginException.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2023 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.util 12 | 13 | open class PluginException(message: String?, cause: Throwable? = null) 14 | : RuntimeException(message, cause) -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/model/util/ResourceException.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.util 12 | 13 | import io.fabric8.kubernetes.api.model.HasMetadata 14 | 15 | class ResourceException( 16 | message: String?, 17 | cause: Throwable? = null, 18 | val resources: List = emptyList()) 19 | : PluginException(message, cause) -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/settings/SettingsChangeListener.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.settings 12 | 13 | import com.intellij.util.messages.Topic 14 | 15 | interface SettingsChangeListener { 16 | 17 | companion object { 18 | @Topic.AppLevel 19 | val CHANGED = Topic.create("Kubernetes Settings Changed", SettingsChangeListener::class.java) 20 | } 21 | 22 | fun changed(property: String, value: String?) 23 | 24 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/tree/ITreeStructureContributionFactory.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.tree 12 | 13 | import com.redhat.devtools.intellij.kubernetes.model.IResourceModel 14 | 15 | interface ITreeStructureContributionFactory { 16 | fun create(model:IResourceModel): ITreeStructureContribution 17 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/tree/MultiParentTreeStructure.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.tree 12 | 13 | import com.intellij.ide.util.treeView.NodeDescriptor 14 | 15 | /** 16 | * Adds API for tree structures that allow multiple parents for a given element. 17 | */ 18 | interface MultiParentTreeStructure { 19 | fun isParentDescriptor(descriptor: NodeDescriptor<*>?, element: Any): Boolean 20 | } -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/tree/util/TreeNodeElementUtils.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2020 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.tree.util 12 | 13 | import com.redhat.devtools.intellij.kubernetes.model.resource.ResourceKind 14 | import com.redhat.devtools.intellij.kubernetes.tree.TreeStructure 15 | import io.fabric8.kubernetes.api.model.HasMetadata 16 | 17 | fun getResourceKind(element: Any?): ResourceKind<*>? { 18 | return when (element) { 19 | is HasMetadata -> 20 | ResourceKind.create(element) 21 | is TreeStructure.Folder -> 22 | element.kind 23 | else -> { 24 | null 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/kotlin/com/redhat/devtools/intellij/kubernetes/usage/PsiElementMappingsFilter.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2025 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.usage 12 | 13 | import com.intellij.psi.PsiElement 14 | import com.intellij.psi.util.PsiElementFilter 15 | 16 | interface PsiElementMappingsFilter: PsiElementFilter { 17 | fun getMatchingElement(element: PsiElement): PsiElement? 18 | } -------------------------------------------------------------------------------- /src/main/kotlin/icons/Icons.kt: -------------------------------------------------------------------------------- 1 | package icons 2 | 3 | import com.intellij.openapi.util.IconLoader 4 | import javax.swing.Icon 5 | 6 | object Icons { 7 | 8 | @JvmField 9 | val consolesToolwindow = loadIcon("icons/consoles-toolwindow.svg") 10 | @JvmField 11 | val download = loadIcon("icons/download.svg") 12 | @JvmField 13 | val upload = loadIcon("icons/upload.svg") 14 | @JvmField 15 | val uploadModified = loadIcon("icons/upload-modified.svg") 16 | @JvmField 17 | val diff = loadIcon("icons/diff.svg") 18 | @JvmField 19 | val removeClutter = loadIcon("icons/remove-clutter.svg") 20 | @JvmField 21 | val consoles = loadIcon("icons/consoles.svg") 22 | @JvmField 23 | val terminal = loadIcon("icons/terminal.svg") 24 | @JvmField 25 | val describe = loadIcon("icons/lupe.svg") 26 | 27 | private fun loadIcon(path: String): Icon { 28 | return IconLoader.getIcon(path, Icons::class.java) 29 | } 30 | } -------------------------------------------------------------------------------- /src/main/resources/META-INF/plugin-json.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/main/resources/icons/download.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/icons/download_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/icons/upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/icons/upload_dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/allowedcsidriver-policy-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "AllowedCSIDriver represents a single inline CSI Driver that is allowed to be used.", 3 | "properties": { 4 | "name": { 5 | "description": "Name is the registered name of the CSI driver", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/allowedflexvolume-policy-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "AllowedFlexVolume represents a single Flexvolume that is allowed to be used.", 3 | "properties": { 4 | "driver": { 5 | "description": "driver is the name of the Flexvolume driver.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "driver" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/allowedhostpath-policy-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "AllowedHostPath defines the host volume conditions that will be enabled by a policy for pods to use. It requires the path prefix to be defined.", 3 | "properties": { 4 | "pathPrefix": { 5 | "description": "pathPrefix is the path prefix that the host volume must match. It does not support `*`. Trailing slashes are trimmed when validating the path prefix with a host path.\n\nExamples: `/foo` would allow `/foo`, `/foo/` and `/foo/bar` `/foo` would not allow `/food` or `/etc/foo`", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "readOnly": { 12 | "description": "when set to true, will allow host volumes matching the pathPrefix only if all volume mounts are readOnly.", 13 | "type": [ 14 | "boolean", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/apiservicecondition-apiregistration-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "APIServiceCondition describes the state of an APIService at a particular point", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "Human-readable message indicating details about last transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "Unique, one-word, CamelCase reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "Status is the status of the condition. Can be True, False, Unknown.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "Type is the type of the condition.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "required": [ 42 | "type", 43 | "status" 44 | ], 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/attachedvolume-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "AttachedVolume describes a volume attached to a node", 3 | "properties": { 4 | "devicePath": { 5 | "description": "DevicePath represents the device path where the volume should be available", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "name": { 12 | "description": "Name of the attached volume", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "name", 21 | "devicePath" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/azurefilepersistentvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", 3 | "properties": { 4 | "readOnly": { 5 | "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", 6 | "type": [ 7 | "boolean", 8 | "null" 9 | ] 10 | }, 11 | "secretName": { 12 | "description": "secretName is the name of secret that contains Azure Storage Account Name and Key", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "secretNamespace": { 19 | "description": "secretNamespace is the namespace of the secret that contains Azure Storage Account Name and Key default is the same as the Pod", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "shareName": { 26 | "description": "shareName is the azure Share Name", 27 | "type": [ 28 | "string", 29 | "null" 30 | ] 31 | } 32 | }, 33 | "required": [ 34 | "secretName", 35 | "shareName" 36 | ], 37 | "type": "object", 38 | "additionalProperties": false, 39 | "$schema": "http://json-schema.org/schema#" 40 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/azurefilevolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "AzureFile represents an Azure File Service mount on the host and bind mount to the pod.", 3 | "properties": { 4 | "readOnly": { 5 | "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", 6 | "type": [ 7 | "boolean", 8 | "null" 9 | ] 10 | }, 11 | "secretName": { 12 | "description": "secretName is the name of secret that contains Azure Storage Account Name and Key", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "shareName": { 19 | "description": "shareName is the azure share Name", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "secretName", 28 | "shareName" 29 | ], 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/boundobjectreference-authentication-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "BoundObjectReference is a reference to an object that a token is bound to.", 3 | "properties": { 4 | "apiVersion": { 5 | "description": "API version of the referent.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "kind": { 12 | "description": "Kind of the referent. Valid kinds are 'Pod' and 'Secret'.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "name": { 19 | "description": "Name of the referent.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "uid": { 26 | "description": "UID of the referent.", 27 | "type": [ 28 | "string", 29 | "null" 30 | ] 31 | } 32 | }, 33 | "type": "object", 34 | "additionalProperties": false, 35 | "$schema": "http://json-schema.org/schema#" 36 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/capabilities-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Adds and removes POSIX capabilities from running containers.", 3 | "properties": { 4 | "add": { 5 | "description": "Added capabilities", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | }, 17 | "drop": { 18 | "description": "Removed capabilities", 19 | "items": { 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "type": [ 26 | "array", 27 | "null" 28 | ] 29 | } 30 | }, 31 | "type": "object", 32 | "additionalProperties": false, 33 | "$schema": "http://json-schema.org/schema#" 34 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/clientipconfig-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", 3 | "properties": { 4 | "timeoutSeconds": { 5 | "description": "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).", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | } 12 | }, 13 | "type": "object", 14 | "additionalProperties": false, 15 | "$schema": "http://json-schema.org/schema#" 16 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/componentcondition-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Information about the condition of a component.", 3 | "properties": { 4 | "error": { 5 | "description": "Condition error code for a component. For example, a health check error code.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "message": { 12 | "description": "Message about the condition for a component. For example, information about a health check.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "status": { 19 | "description": "Status of the condition for a component. Valid values for \"Healthy\": \"True\", \"False\", or \"Unknown\".", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "type": { 26 | "description": "Type of condition for a component. Valid value: \"Healthy\"", 27 | "type": [ 28 | "string", 29 | "null" 30 | ] 31 | } 32 | }, 33 | "required": [ 34 | "type", 35 | "status" 36 | ], 37 | "type": "object", 38 | "additionalProperties": false, 39 | "$schema": "http://json-schema.org/schema#" 40 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/configmapenvsource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.", 3 | "properties": { 4 | "name": { 5 | "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "optional": { 12 | "description": "Specify whether the ConfigMap must be defined", 13 | "type": [ 14 | "boolean", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/configmapkeyselector-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Selects a key from a ConfigMap.", 3 | "properties": { 4 | "key": { 5 | "description": "The key to select.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "name": { 12 | "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "optional": { 19 | "description": "Specify whether the ConfigMap or its key must be defined", 20 | "type": [ 21 | "boolean", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "key" 28 | ], 29 | "type": "object", 30 | "x-kubernetes-map-type": "atomic", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/containerimage-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Describe a container image", 3 | "properties": { 4 | "names": { 5 | "description": "Names by which this image is known. e.g. [\"k8s.gcr.io/hyperkube:v1.0.7\", \"dockerhub.io/google_containers/hyperkube:v1.0.7\"]", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | }, 17 | "sizeBytes": { 18 | "description": "The size of the image in bytes.", 19 | "format": "int64", 20 | "type": [ 21 | "integer", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "type": "object", 27 | "additionalProperties": false, 28 | "$schema": "http://json-schema.org/schema#" 29 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/containerstaterunning-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ContainerStateRunning is a running state of a container.", 3 | "properties": { 4 | "startedAt": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | } 12 | }, 13 | "type": "object", 14 | "additionalProperties": false, 15 | "$schema": "http://json-schema.org/schema#" 16 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/containerstatewaiting-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ContainerStateWaiting is a waiting state of a container.", 3 | "properties": { 4 | "message": { 5 | "description": "Message regarding why the container is not yet running.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "reason": { 12 | "description": "(brief) reason the container is not yet running.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/crossversionobjectreference-autoscaling-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", 3 | "properties": { 4 | "apiVersion": { 5 | "description": "API version of the referent", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "kind": { 12 | "description": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "name": { 19 | "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "kind", 28 | "name" 29 | ], 30 | "type": "object", 31 | "x-kubernetes-map-type": "atomic", 32 | "additionalProperties": false, 33 | "$schema": "http://json-schema.org/schema#" 34 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/crossversionobjectreference-autoscaling-v2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", 3 | "properties": { 4 | "apiVersion": { 5 | "description": "API version of the referent", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "kind": { 12 | "description": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "name": { 19 | "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "kind", 28 | "name" 29 | ], 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/crossversionobjectreference-autoscaling-v2beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", 3 | "properties": { 4 | "apiVersion": { 5 | "description": "API version of the referent", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "kind": { 12 | "description": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "name": { 19 | "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "kind", 28 | "name" 29 | ], 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/crossversionobjectreference-autoscaling-v2beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "CrossVersionObjectReference contains enough information to let you identify the referred resource.", 3 | "properties": { 4 | "apiVersion": { 5 | "description": "API version of the referent", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "kind": { 12 | "description": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds\"", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "name": { 19 | "description": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "kind", 28 | "name" 29 | ], 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/customresourcesubresourcestatus-apiextensions-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "CustomResourceSubresourceStatus defines how to serve the status subresource for CustomResources. Status is represented by the `.status` JSON path inside of a CustomResource. When set, * exposes a /status subresource for the custom resource * PUT requests to the /status subresource take a custom resource object, and ignore changes to anything except the status stanza * PUT/POST/PATCH requests to the custom resource ignore changes to the status stanza", 3 | "type": "object", 4 | "$schema": "http://json-schema.org/schema#", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/daemonendpoint-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "DaemonEndpoint contains information about a single Daemon endpoint.", 3 | "properties": { 4 | "Port": { 5 | "description": "Port number of the given endpoint.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | } 12 | }, 13 | "required": [ 14 | "Port" 15 | ], 16 | "type": "object", 17 | "additionalProperties": false, 18 | "$schema": "http://json-schema.org/schema#" 19 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/daemonsetcondition-apps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "DaemonSetCondition describes the state of a DaemonSet at a certain point.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "A human readable message indicating details about the transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "The reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "Status of the condition, one of True, False, Unknown.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "Type of DaemonSet condition.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "required": [ 42 | "type", 43 | "status" 44 | ], 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/deploymentstrategy-apps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "DeploymentStrategy describes how to replace existing pods with new ones.", 3 | "properties": { 4 | "rollingUpdate": { 5 | "description": "Spec to control the desired behavior of rolling update.", 6 | "properties": { 7 | "maxSurge": { 8 | "oneOf": [ 9 | { 10 | "type": [ 11 | "string", 12 | "null" 13 | ] 14 | }, 15 | { 16 | "type": [ 17 | "integer", 18 | "null" 19 | ] 20 | } 21 | ] 22 | }, 23 | "maxUnavailable": { 24 | "oneOf": [ 25 | { 26 | "type": [ 27 | "string", 28 | "null" 29 | ] 30 | }, 31 | { 32 | "type": [ 33 | "integer", 34 | "null" 35 | ] 36 | } 37 | ] 38 | } 39 | }, 40 | "type": [ 41 | "object", 42 | "null" 43 | ], 44 | "additionalProperties": false 45 | }, 46 | "type": { 47 | "description": "Type of deployment. Can be \"Recreate\" or \"RollingUpdate\". Default is RollingUpdate.\n\n", 48 | "type": [ 49 | "string", 50 | "null" 51 | ] 52 | } 53 | }, 54 | "type": "object", 55 | "additionalProperties": false, 56 | "$schema": "http://json-schema.org/schema#" 57 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/emptydirvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling.", 3 | "properties": { 4 | "medium": { 5 | "description": "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", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "sizeLimit": { 12 | "oneOf": [ 13 | { 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | { 20 | "type": [ 21 | "number", 22 | "null" 23 | ] 24 | } 25 | ] 26 | } 27 | }, 28 | "type": "object", 29 | "additionalProperties": false, 30 | "$schema": "http://json-schema.org/schema#" 31 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/endpointhints-discovery-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "EndpointHints provides hints describing how an endpoint should be consumed.", 3 | "properties": { 4 | "forZones": { 5 | "description": "forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing.", 6 | "items": { 7 | "description": "ForZone provides information about which zones should consume this endpoint.", 8 | "properties": { 9 | "name": { 10 | "description": "name represents the name of the zone.", 11 | "type": "string" 12 | } 13 | }, 14 | "required": [ 15 | "name" 16 | ], 17 | "type": [ 18 | "object", 19 | "null" 20 | ], 21 | "additionalProperties": false 22 | }, 23 | "type": [ 24 | "array", 25 | "null" 26 | ], 27 | "x-kubernetes-list-type": "atomic" 28 | } 29 | }, 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/endpointhints-discovery-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "EndpointHints provides hints describing how an endpoint should be consumed.", 3 | "properties": { 4 | "forZones": { 5 | "description": "forZones indicates the zone(s) this endpoint should be consumed by to enable topology aware routing. May contain a maximum of 8 entries.", 6 | "items": { 7 | "description": "ForZone provides information about which zones should consume this endpoint.", 8 | "properties": { 9 | "name": { 10 | "description": "name represents the name of the zone.", 11 | "type": "string" 12 | } 13 | }, 14 | "required": [ 15 | "name" 16 | ], 17 | "type": [ 18 | "object", 19 | "null" 20 | ], 21 | "additionalProperties": false 22 | }, 23 | "type": [ 24 | "array", 25 | "null" 26 | ], 27 | "x-kubernetes-list-type": "atomic" 28 | } 29 | }, 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/endpointport-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "EndpointPort is a tuple that describes a single port.", 3 | "properties": { 4 | "appProtocol": { 5 | "description": "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and https://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "name": { 12 | "description": "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.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "port": { 19 | "description": "The port number of the endpoint.", 20 | "format": "int32", 21 | "type": [ 22 | "integer", 23 | "null" 24 | ] 25 | }, 26 | "protocol": { 27 | "description": "The IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP.\n\n", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | } 33 | }, 34 | "required": [ 35 | "port" 36 | ], 37 | "type": "object", 38 | "x-kubernetes-map-type": "atomic", 39 | "additionalProperties": false, 40 | "$schema": "http://json-schema.org/schema#" 41 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/eventseries-events-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "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.", 3 | "properties": { 4 | "count": { 5 | "description": "count is the number of occurrences in this series up to the last heartbeat time.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "lastObservedTime": { 13 | "description": "MicroTime is version of Time with microsecond level precision.", 14 | "format": "date-time", 15 | "type": [ 16 | "string", 17 | "null" 18 | ] 19 | } 20 | }, 21 | "required": [ 22 | "count", 23 | "lastObservedTime" 24 | ], 25 | "type": "object", 26 | "additionalProperties": false, 27 | "$schema": "http://json-schema.org/schema#" 28 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/eventseries-events-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.", 3 | "properties": { 4 | "count": { 5 | "description": "count is the number of occurrences in this series up to the last heartbeat time.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "lastObservedTime": { 13 | "description": "MicroTime is version of Time with microsecond level precision.", 14 | "format": "date-time", 15 | "type": [ 16 | "string", 17 | "null" 18 | ] 19 | } 20 | }, 21 | "required": [ 22 | "count", 23 | "lastObservedTime" 24 | ], 25 | "type": "object", 26 | "additionalProperties": false, 27 | "$schema": "http://json-schema.org/schema#" 28 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/eventseries-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time.", 3 | "properties": { 4 | "count": { 5 | "description": "Number of occurrences in this series up to the last heartbeat time", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "lastObservedTime": { 13 | "description": "MicroTime is version of Time with microsecond level precision.", 14 | "format": "date-time", 15 | "type": [ 16 | "string", 17 | "null" 18 | ] 19 | } 20 | }, 21 | "type": "object", 22 | "additionalProperties": false, 23 | "$schema": "http://json-schema.org/schema#" 24 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/eventsource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "EventSource contains information for an event.", 3 | "properties": { 4 | "component": { 5 | "description": "Component from which the event is generated.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "host": { 12 | "description": "Node name on which the event is generated.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/execaction-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ExecAction describes a \"run in container\" action.", 3 | "properties": { 4 | "command": { 5 | "description": "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.", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | } 17 | }, 18 | "type": "object", 19 | "additionalProperties": false, 20 | "$schema": "http://json-schema.org/schema#" 21 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/externaldocumentation-apiextensions-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ExternalDocumentation allows referencing an external resource for extended documentation.", 3 | "properties": { 4 | "description": { 5 | "type": [ 6 | "string", 7 | "null" 8 | ] 9 | }, 10 | "url": { 11 | "type": [ 12 | "string", 13 | "null" 14 | ] 15 | } 16 | }, 17 | "type": "object", 18 | "additionalProperties": false, 19 | "$schema": "http://json-schema.org/schema#" 20 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/fieldsv1-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:', where is the name of a field in a struct, or key in a map 'v:', where is the exact json formatted value of a list item 'i:', where is position of a item in a list 'k:', where is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff", 3 | "type": "object", 4 | "$schema": "http://json-schema.org/schema#", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/flockervolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "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.", 3 | "properties": { 4 | "datasetName": { 5 | "description": "datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "datasetUUID": { 12 | "description": "datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/flowdistinguishermethod-flowcontrol-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "FlowDistinguisherMethod specifies the method of a flow distinguisher.", 3 | "properties": { 4 | "type": { 5 | "description": "`type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "type" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/flowdistinguishermethod-flowcontrol-v1beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "FlowDistinguisherMethod specifies the method of a flow distinguisher.", 3 | "properties": { 4 | "type": { 5 | "description": "`type` is the type of flow distinguisher method The supported types are \"ByUser\" and \"ByNamespace\". Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "type" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/flowschemacondition-flowcontrol-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "FlowSchemaCondition describes conditions for a FlowSchema.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "`message` is a human-readable message indicating details about last transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "`status` is the status of the condition. Can be True, False, Unknown. Required.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "`type` is the type of the condition. Required.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "type": "object", 42 | "additionalProperties": false, 43 | "$schema": "http://json-schema.org/schema#" 44 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/flowschemacondition-flowcontrol-v1beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "FlowSchemaCondition describes conditions for a FlowSchema.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "`message` is a human-readable message indicating details about last transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "`status` is the status of the condition. Can be True, False, Unknown. Required.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "`type` is the type of the condition. Required.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "type": "object", 42 | "additionalProperties": false, 43 | "$schema": "http://json-schema.org/schema#" 44 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/forzone-discovery-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ForZone provides information about which zones should consume this endpoint.", 3 | "properties": { 4 | "name": { 5 | "description": "name represents the name of the zone.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/forzone-discovery-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ForZone provides information about which zones should consume this endpoint.", 3 | "properties": { 4 | "name": { 5 | "description": "name represents the name of the zone.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/fsgroupstrategyoptions-policy-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "FSGroupStrategyOptions defines the strategy type and options used to create the strategy.", 3 | "properties": { 4 | "ranges": { 5 | "description": "ranges are the allowed ranges of fs groups. If you would like to force a single fs group then supply a single range with the same start and end. Required for MustRunAs.", 6 | "items": { 7 | "description": "IDRange provides a min/max of an allowed range of IDs.", 8 | "properties": { 9 | "max": { 10 | "description": "max is the end of the range, inclusive.", 11 | "format": "int64", 12 | "type": "integer" 13 | }, 14 | "min": { 15 | "description": "min is the start of the range, inclusive.", 16 | "format": "int64", 17 | "type": "integer" 18 | } 19 | }, 20 | "required": [ 21 | "min", 22 | "max" 23 | ], 24 | "type": [ 25 | "object", 26 | "null" 27 | ], 28 | "additionalProperties": false 29 | }, 30 | "type": [ 31 | "array", 32 | "null" 33 | ] 34 | }, 35 | "rule": { 36 | "description": "rule is the strategy that will dictate what FSGroup is used in the SecurityContext.", 37 | "type": [ 38 | "string", 39 | "null" 40 | ] 41 | } 42 | }, 43 | "type": "object", 44 | "additionalProperties": false, 45 | "$schema": "http://json-schema.org/schema#" 46 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/gitrepovolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "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.\n\nDEPRECATED: 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.", 3 | "properties": { 4 | "directory": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "repository": { 12 | "description": "repository is the URL", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "revision": { 19 | "description": "revision is the commit hash for the specified revision.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "repository" 28 | ], 29 | "type": "object", 30 | "additionalProperties": false, 31 | "$schema": "http://json-schema.org/schema#" 32 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/glusterfsvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling.", 3 | "properties": { 4 | "endpoints": { 5 | "description": "endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "path": { 12 | "description": "path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "readOnly": { 19 | "description": "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", 20 | "type": [ 21 | "boolean", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "endpoints", 28 | "path" 29 | ], 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/groupsubject-flowcontrol-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "GroupSubject holds detailed information for group-kind subject.", 3 | "properties": { 4 | "name": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/groupsubject-flowcontrol-v1beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "GroupSubject holds detailed information for group-kind subject.", 3 | "properties": { 4 | "name": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/groupversionfordiscovery-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "GroupVersion contains the \"group/version\" and \"version\" string of a version. It is made a struct to keep extensibility.", 3 | "properties": { 4 | "groupVersion": { 5 | "description": "groupVersion specifies the API group and version in the form \"group/version\"", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "version": { 12 | "description": "version specifies the version in the form of \"version\". This is to save the clients the trouble of splitting the GroupVersion.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "groupVersion", 21 | "version" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/grpcaction-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "properties": { 3 | "port": { 4 | "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.", 5 | "format": "int32", 6 | "type": [ 7 | "integer", 8 | "null" 9 | ] 10 | }, 11 | "service": { 12 | "description": "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).\n\nIf this is not specified, the default behavior is defined by gRPC.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "port" 21 | ], 22 | "type": "object", 23 | "additionalProperties": false, 24 | "$schema": "http://json-schema.org/schema#" 25 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/horizontalpodautoscalercondition-autoscaling-v2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "message is a human-readable explanation containing details about the transition", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "reason is the reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "status is the status of the condition (True, False, Unknown)", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "type describes the current condition", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "required": [ 42 | "type", 43 | "status" 44 | ], 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/horizontalpodautoscalercondition-autoscaling-v2beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "message is a human-readable explanation containing details about the transition", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "reason is the reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "status is the status of the condition (True, False, Unknown)", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "type describes the current condition", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "required": [ 42 | "type", 43 | "status" 44 | ], 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/horizontalpodautoscalercondition-autoscaling-v2beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "message is a human-readable explanation containing details about the transition", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "reason is the reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "status is the status of the condition (True, False, Unknown)", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "type describes the current condition", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "required": [ 42 | "type", 43 | "status" 44 | ], 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/hostalias-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file.", 3 | "properties": { 4 | "hostnames": { 5 | "description": "Hostnames for the above IP address.", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | }, 17 | "ip": { 18 | "description": "IP address of the host file entry.", 19 | "type": [ 20 | "string", 21 | "null" 22 | ] 23 | } 24 | }, 25 | "type": "object", 26 | "additionalProperties": false, 27 | "$schema": "http://json-schema.org/schema#" 28 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/hostpathvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling.", 3 | "properties": { 4 | "path": { 5 | "description": "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", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "type": { 12 | "description": "type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "path" 21 | ], 22 | "type": "object", 23 | "additionalProperties": false, 24 | "$schema": "http://json-schema.org/schema#" 25 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/hostportrange-policy-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "HostPortRange defines a range of host ports that will be enabled by a policy for pods to use. It requires both the start and end to be defined.", 3 | "properties": { 4 | "max": { 5 | "description": "max is the end of the range, inclusive.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "min": { 13 | "description": "min is the start of the range, inclusive.", 14 | "format": "int32", 15 | "type": [ 16 | "integer", 17 | "null" 18 | ] 19 | } 20 | }, 21 | "required": [ 22 | "min", 23 | "max" 24 | ], 25 | "type": "object", 26 | "additionalProperties": false, 27 | "$schema": "http://json-schema.org/schema#" 28 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/hpascalingpolicy-autoscaling-v2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "HPAScalingPolicy is a single policy which must hold true for a specified past interval.", 3 | "properties": { 4 | "periodSeconds": { 5 | "description": "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).", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "type": { 13 | "description": "Type is used to specify the scaling policy.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "value": { 20 | "description": "Value contains the amount of change which is permitted by the policy. It must be greater than zero", 21 | "format": "int32", 22 | "type": [ 23 | "integer", 24 | "null" 25 | ] 26 | } 27 | }, 28 | "required": [ 29 | "type", 30 | "value", 31 | "periodSeconds" 32 | ], 33 | "type": "object", 34 | "additionalProperties": false, 35 | "$schema": "http://json-schema.org/schema#" 36 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/hpascalingpolicy-autoscaling-v2beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "HPAScalingPolicy is a single policy which must hold true for a specified past interval.", 3 | "properties": { 4 | "periodSeconds": { 5 | "description": "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).", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "type": { 13 | "description": "Type is used to specify the scaling policy.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "value": { 20 | "description": "Value contains the amount of change which is permitted by the policy. It must be greater than zero", 21 | "format": "int32", 22 | "type": [ 23 | "integer", 24 | "null" 25 | ] 26 | } 27 | }, 28 | "required": [ 29 | "type", 30 | "value", 31 | "periodSeconds" 32 | ], 33 | "type": "object", 34 | "additionalProperties": false, 35 | "$schema": "http://json-schema.org/schema#" 36 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/httpheader-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "HTTPHeader describes a custom header to be used in HTTP probes", 3 | "properties": { 4 | "name": { 5 | "description": "The header field name", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "value": { 12 | "description": "The header field value", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "name", 21 | "value" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/idrange-policy-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "IDRange provides a min/max of an allowed range of IDs.", 3 | "properties": { 4 | "max": { 5 | "description": "max is the end of the range, inclusive.", 6 | "format": "int64", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "min": { 13 | "description": "min is the start of the range, inclusive.", 14 | "format": "int64", 15 | "type": [ 16 | "integer", 17 | "null" 18 | ] 19 | } 20 | }, 21 | "required": [ 22 | "min", 23 | "max" 24 | ], 25 | "type": "object", 26 | "additionalProperties": false, 27 | "$schema": "http://json-schema.org/schema#" 28 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/info-pkg-version.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Info contains versioning information. how we'll want to distribute that information.", 3 | "properties": { 4 | "buildDate": { 5 | "type": [ 6 | "string", 7 | "null" 8 | ] 9 | }, 10 | "compiler": { 11 | "type": [ 12 | "string", 13 | "null" 14 | ] 15 | }, 16 | "gitCommit": { 17 | "type": [ 18 | "string", 19 | "null" 20 | ] 21 | }, 22 | "gitTreeState": { 23 | "type": [ 24 | "string", 25 | "null" 26 | ] 27 | }, 28 | "gitVersion": { 29 | "type": [ 30 | "string", 31 | "null" 32 | ] 33 | }, 34 | "goVersion": { 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | }, 40 | "major": { 41 | "type": [ 42 | "string", 43 | "null" 44 | ] 45 | }, 46 | "minor": { 47 | "type": [ 48 | "string", 49 | "null" 50 | ] 51 | }, 52 | "platform": { 53 | "type": [ 54 | "string", 55 | "null" 56 | ] 57 | } 58 | }, 59 | "required": [ 60 | "major", 61 | "minor", 62 | "gitVersion", 63 | "gitCommit", 64 | "gitTreeState", 65 | "buildDate", 66 | "goVersion", 67 | "compiler", 68 | "platform" 69 | ], 70 | "type": "object", 71 | "additionalProperties": false, 72 | "$schema": "http://json-schema.org/schema#" 73 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/ingressservicebackend-networking-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "IngressServiceBackend references a Kubernetes Service as a Backend.", 3 | "properties": { 4 | "name": { 5 | "description": "Name is the referenced service. The service must exist in the same namespace as the Ingress object.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "port": { 12 | "description": "ServiceBackendPort is the service port being referenced.", 13 | "properties": { 14 | "name": { 15 | "description": "Name is the name of the port on the Service. This is a mutually exclusive setting with \"Number\".", 16 | "type": [ 17 | "string", 18 | "null" 19 | ] 20 | }, 21 | "number": { 22 | "description": "Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \"Name\".", 23 | "format": "int32", 24 | "type": [ 25 | "integer", 26 | "null" 27 | ] 28 | } 29 | }, 30 | "type": [ 31 | "object", 32 | "null" 33 | ], 34 | "additionalProperties": false 35 | } 36 | }, 37 | "required": [ 38 | "name" 39 | ], 40 | "type": "object", 41 | "additionalProperties": false, 42 | "$schema": "http://json-schema.org/schema#" 43 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/ingresstls-networking-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "IngressTLS describes the transport layer security associated with an Ingress.", 3 | "properties": { 4 | "hosts": { 5 | "description": "Hosts are 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.", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ], 16 | "x-kubernetes-list-type": "atomic" 17 | }, 18 | "secretName": { 19 | "description": "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.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "type": "object", 27 | "additionalProperties": false, 28 | "$schema": "http://json-schema.org/schema#" 29 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/intorstring-util-intstr.json: -------------------------------------------------------------------------------- 1 | { 2 | "oneOf": [ 3 | { 4 | "type": "string" 5 | }, 6 | { 7 | "type": "integer" 8 | } 9 | ], 10 | "$schema": "http://json-schema.org/schema#", 11 | "type": "object", 12 | "additionalProperties": false 13 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/ipblock-networking-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "IPBlock describes a particular CIDR (Ex. \"192.168.1.1/24\",\"2001:db9::/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.", 3 | "properties": { 4 | "cidr": { 5 | "description": "CIDR is a string representing the IP Block Valid examples are \"192.168.1.1/24\" or \"2001:db9::/64\"", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "except": { 12 | "description": "Except is a slice of CIDRs that should not be included within an IP Block Valid examples are \"192.168.1.1/24\" or \"2001:db9::/64\" Except values will be rejected if they are outside the CIDR range", 13 | "items": { 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "type": [ 20 | "array", 21 | "null" 22 | ] 23 | } 24 | }, 25 | "required": [ 26 | "cidr" 27 | ], 28 | "type": "object", 29 | "additionalProperties": false, 30 | "$schema": "http://json-schema.org/schema#" 31 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/json-apiextensions-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, []interface{}, map[string]interface{} and nil.", 3 | "$schema": "http://json-schema.org/schema#", 4 | "type": "object", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/keytopath-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Maps a string key to a path within a volume.", 3 | "properties": { 4 | "key": { 5 | "description": "key is the key to project.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "mode": { 12 | "description": "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.", 13 | "format": "int32", 14 | "type": [ 15 | "integer", 16 | "null" 17 | ] 18 | }, 19 | "path": { 20 | "description": "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 '..'.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | } 26 | }, 27 | "required": [ 28 | "key", 29 | "path" 30 | ], 31 | "type": "object", 32 | "additionalProperties": false, 33 | "$schema": "http://json-schema.org/schema#" 34 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/labelselectorrequirement-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", 3 | "properties": { 4 | "key": { 5 | "description": "key is the label key that the selector applies to.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ], 10 | "x-kubernetes-patch-merge-key": "key", 11 | "x-kubernetes-patch-strategy": "merge" 12 | }, 13 | "operator": { 14 | "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", 15 | "type": [ 16 | "string", 17 | "null" 18 | ] 19 | }, 20 | "values": { 21 | "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.", 22 | "items": { 23 | "type": [ 24 | "string", 25 | "null" 26 | ] 27 | }, 28 | "type": [ 29 | "array", 30 | "null" 31 | ] 32 | } 33 | }, 34 | "required": [ 35 | "key", 36 | "operator" 37 | ], 38 | "type": "object", 39 | "additionalProperties": false, 40 | "$schema": "http://json-schema.org/schema#" 41 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/leasespec-coordination-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "LeaseSpec is a specification of a Lease.", 3 | "properties": { 4 | "acquireTime": { 5 | "description": "MicroTime is version of Time with microsecond level precision.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "holderIdentity": { 13 | "description": "holderIdentity contains the identity of the holder of a current lease.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "leaseDurationSeconds": { 20 | "description": "leaseDurationSeconds is a duration that candidates for a lease need to wait to force acquire it. This is measure against time of last observed RenewTime.", 21 | "format": "int32", 22 | "type": [ 23 | "integer", 24 | "null" 25 | ] 26 | }, 27 | "leaseTransitions": { 28 | "description": "leaseTransitions is the number of transitions of a lease between holders.", 29 | "format": "int32", 30 | "type": [ 31 | "integer", 32 | "null" 33 | ] 34 | }, 35 | "renewTime": { 36 | "description": "MicroTime is version of Time with microsecond level precision.", 37 | "format": "date-time", 38 | "type": [ 39 | "string", 40 | "null" 41 | ] 42 | } 43 | }, 44 | "type": "object", 45 | "additionalProperties": false, 46 | "$schema": "http://json-schema.org/schema#" 47 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/localobjectreference-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.", 3 | "properties": { 4 | "name": { 5 | "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "type": "object", 13 | "x-kubernetes-map-type": "atomic", 14 | "additionalProperties": false, 15 | "$schema": "http://json-schema.org/schema#" 16 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/localvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Local represents directly-attached storage with node affinity (Beta feature)", 3 | "properties": { 4 | "fsType": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "path": { 12 | "description": "path of the full path to the volume on the node. It can be either a directory or block device (disk, partition, ...).", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "path" 21 | ], 22 | "type": "object", 23 | "additionalProperties": false, 24 | "$schema": "http://json-schema.org/schema#" 25 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/metricvaluestatus-autoscaling-v2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "MetricValueStatus holds the current value for a metric", 3 | "properties": { 4 | "averageUtilization": { 5 | "description": "currentAverageUtilization is the current 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.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "averageValue": { 13 | "oneOf": [ 14 | { 15 | "type": [ 16 | "string", 17 | "null" 18 | ] 19 | }, 20 | { 21 | "type": [ 22 | "number", 23 | "null" 24 | ] 25 | } 26 | ] 27 | }, 28 | "value": { 29 | "oneOf": [ 30 | { 31 | "type": [ 32 | "string", 33 | "null" 34 | ] 35 | }, 36 | { 37 | "type": [ 38 | "number", 39 | "null" 40 | ] 41 | } 42 | ] 43 | } 44 | }, 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/metricvaluestatus-autoscaling-v2beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "MetricValueStatus holds the current value for a metric", 3 | "properties": { 4 | "averageUtilization": { 5 | "description": "currentAverageUtilization is the current 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.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "averageValue": { 13 | "oneOf": [ 14 | { 15 | "type": [ 16 | "string", 17 | "null" 18 | ] 19 | }, 20 | { 21 | "type": [ 22 | "number", 23 | "null" 24 | ] 25 | } 26 | ] 27 | }, 28 | "value": { 29 | "oneOf": [ 30 | { 31 | "type": [ 32 | "string", 33 | "null" 34 | ] 35 | }, 36 | { 37 | "type": [ 38 | "number", 39 | "null" 40 | ] 41 | } 42 | ] 43 | } 44 | }, 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/microtime-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "MicroTime is version of Time with microsecond level precision.", 3 | "format": "date-time", 4 | "type": "string", 5 | "$schema": "http://json-schema.org/schema#", 6 | "additionalProperties": false 7 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/namespacecondition-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NamespaceCondition contains details about state of namespace.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "reason": { 19 | "type": [ 20 | "string", 21 | "null" 22 | ] 23 | }, 24 | "status": { 25 | "description": "Status of the condition, one of True, False, Unknown.", 26 | "type": [ 27 | "string", 28 | "null" 29 | ] 30 | }, 31 | "type": { 32 | "description": "Type of namespace controller condition.", 33 | "type": [ 34 | "string", 35 | "null" 36 | ] 37 | } 38 | }, 39 | "required": [ 40 | "type", 41 | "status" 42 | ], 43 | "type": "object", 44 | "additionalProperties": false, 45 | "$schema": "http://json-schema.org/schema#" 46 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/namespacespec-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NamespaceSpec describes the attributes on a Namespace.", 3 | "properties": { 4 | "finalizers": { 5 | "description": "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/", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | } 17 | }, 18 | "type": "object", 19 | "additionalProperties": false, 20 | "$schema": "http://json-schema.org/schema#" 21 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/networkpolicyport-networking-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NetworkPolicyPort describes a port to allow traffic on", 3 | "properties": { 4 | "endPort": { 5 | "description": "If set, indicates that the range of ports from port to endPort, 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. This feature is in Beta state and is enabled by default. It can be disabled using the Feature Gate \"NetworkPolicyEndPort\".", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "port": { 13 | "oneOf": [ 14 | { 15 | "type": [ 16 | "string", 17 | "null" 18 | ] 19 | }, 20 | { 21 | "type": [ 22 | "integer", 23 | "null" 24 | ] 25 | } 26 | ] 27 | }, 28 | "protocol": { 29 | "description": "The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.", 30 | "type": [ 31 | "string", 32 | "null" 33 | ] 34 | } 35 | }, 36 | "type": "object", 37 | "additionalProperties": false, 38 | "$schema": "http://json-schema.org/schema#" 39 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/nfsvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling.", 3 | "properties": { 4 | "path": { 5 | "description": "path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "readOnly": { 12 | "description": "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", 13 | "type": [ 14 | "boolean", 15 | "null" 16 | ] 17 | }, 18 | "server": { 19 | "description": "server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "server", 28 | "path" 29 | ], 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/nodeaddress-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NodeAddress contains information for the node's address.", 3 | "properties": { 4 | "address": { 5 | "description": "The node address.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "type": { 12 | "description": "Node address type, one of Hostname, ExternalIP or InternalIP.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "type", 21 | "address" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/nodedaemonendpoints-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NodeDaemonEndpoints lists ports opened by daemons running on the Node.", 3 | "properties": { 4 | "kubeletEndpoint": { 5 | "description": "DaemonEndpoint contains information about a single Daemon endpoint.", 6 | "properties": { 7 | "Port": { 8 | "description": "Port number of the given endpoint.", 9 | "format": "int32", 10 | "type": "integer" 11 | } 12 | }, 13 | "required": [ 14 | "Port" 15 | ], 16 | "type": [ 17 | "object", 18 | "null" 19 | ], 20 | "additionalProperties": false 21 | } 22 | }, 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/nodeselectorrequirement-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", 3 | "properties": { 4 | "key": { 5 | "description": "The label key that the selector applies to.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "operator": { 12 | "description": "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\n", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "values": { 19 | "description": "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.", 20 | "items": { 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "type": [ 27 | "array", 28 | "null" 29 | ] 30 | } 31 | }, 32 | "required": [ 33 | "key", 34 | "operator" 35 | ], 36 | "type": "object", 37 | "additionalProperties": false, 38 | "$schema": "http://json-schema.org/schema#" 39 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/nonresourceattributes-authorization-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NonResourceAttributes includes the authorization attributes available for non-resource requests to the Authorizer interface", 3 | "properties": { 4 | "path": { 5 | "description": "Path is the URL path of the request", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "verb": { 12 | "description": "Verb is the standard HTTP verb", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/nonresourcerule-authorization-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "NonResourceRule holds information that describes a rule for the non-resource", 3 | "properties": { 4 | "nonResourceURLs": { 5 | "description": "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. \"*\" means all.", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | }, 17 | "verbs": { 18 | "description": "Verb is a list of kubernetes non-resource API verbs, like: get, post, put, delete, patch, head, options. \"*\" means all.", 19 | "items": { 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "type": [ 26 | "array", 27 | "null" 28 | ] 29 | } 30 | }, 31 | "required": [ 32 | "verbs" 33 | ], 34 | "type": "object", 35 | "additionalProperties": false, 36 | "$schema": "http://json-schema.org/schema#" 37 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/objectfieldselector-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ObjectFieldSelector selects an APIVersioned field of an object.", 3 | "properties": { 4 | "apiVersion": { 5 | "description": "Version of the schema the FieldPath is written in terms of, defaults to \"v1\".", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "fieldPath": { 12 | "description": "Path of the field to select in the specified API version.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "fieldPath" 21 | ], 22 | "type": "object", 23 | "x-kubernetes-map-type": "atomic", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/overhead-node-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Overhead structure represents the resource overhead associated with running a pod.", 3 | "properties": { 4 | "podFixed": { 5 | "additionalProperties": { 6 | "oneOf": [ 7 | { 8 | "type": [ 9 | "string", 10 | "null" 11 | ] 12 | }, 13 | { 14 | "type": [ 15 | "number", 16 | "null" 17 | ] 18 | } 19 | ] 20 | }, 21 | "description": "PodFixed represents the fixed resource overhead associated with running a pod.", 22 | "type": [ 23 | "object", 24 | "null" 25 | ] 26 | } 27 | }, 28 | "type": "object", 29 | "additionalProperties": false, 30 | "$schema": "http://json-schema.org/schema#" 31 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/overhead-node-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Overhead structure represents the resource overhead associated with running a pod.", 3 | "properties": { 4 | "podFixed": { 5 | "additionalProperties": { 6 | "oneOf": [ 7 | { 8 | "type": [ 9 | "string", 10 | "null" 11 | ] 12 | }, 13 | { 14 | "type": [ 15 | "number", 16 | "null" 17 | ] 18 | } 19 | ] 20 | }, 21 | "description": "PodFixed represents the fixed resource overhead associated with running a pod.", 22 | "type": [ 23 | "object", 24 | "null" 25 | ] 26 | } 27 | }, 28 | "type": "object", 29 | "additionalProperties": false, 30 | "$schema": "http://json-schema.org/schema#" 31 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/patch-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Patch is provided to give a concrete name and type to the Kubernetes PATCH request body.", 3 | "type": "object", 4 | "$schema": "http://json-schema.org/schema#", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/persistentvolumeclaimvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "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).", 3 | "properties": { 4 | "claimName": { 5 | "description": "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", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "readOnly": { 12 | "description": "readOnly Will force the ReadOnly setting in VolumeMounts. Default false.", 13 | "type": [ 14 | "boolean", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "claimName" 21 | ], 22 | "type": "object", 23 | "additionalProperties": false, 24 | "$schema": "http://json-schema.org/schema#" 25 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/persistentvolumestatus-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PersistentVolumeStatus is the current status of a persistent volume.", 3 | "properties": { 4 | "message": { 5 | "description": "message is a human-readable message indicating details about why the volume is in this state.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "phase": { 12 | "description": "phase indicates if a volume is available, bound to a claim, or released by a claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#phase\n\n", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "reason": { 19 | "description": "reason is a brief CamelCase string that describes any failure and is meant for machine parsing and tidy display in the CLI.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "type": "object", 27 | "additionalProperties": false, 28 | "$schema": "http://json-schema.org/schema#" 29 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/photonpersistentdiskvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Represents a Photon Controller persistent disk resource.", 3 | "properties": { 4 | "fsType": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "pdID": { 12 | "description": "pdID is the ID that identifies Photon Controller persistent disk", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "pdID" 21 | ], 22 | "type": "object", 23 | "additionalProperties": false, 24 | "$schema": "http://json-schema.org/schema#" 25 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/poddnsconfigoption-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PodDNSConfigOption defines DNS resolver options of a pod.", 3 | "properties": { 4 | "name": { 5 | "description": "Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "value": { 12 | "type": [ 13 | "string", 14 | "null" 15 | ] 16 | } 17 | }, 18 | "type": "object", 19 | "additionalProperties": false, 20 | "$schema": "http://json-schema.org/schema#" 21 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/podip-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "IP address information for entries in the (plural) PodIPs field. Each entry includes:\n IP: An IP address allocated to the pod. Routable at least within the cluster.", 3 | "properties": { 4 | "ip": { 5 | "description": "ip is an IP address (IPv4 or IPv6) assigned to the pod", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "type": "object", 13 | "additionalProperties": false, 14 | "$schema": "http://json-schema.org/schema#" 15 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/podos-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PodOS defines the OS parameters of a pod.", 3 | "properties": { 4 | "name": { 5 | "description": "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", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/podreadinessgate-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PodReadinessGate contains the reference to a pod condition", 3 | "properties": { 4 | "conditionType": { 5 | "description": "ConditionType refers to a condition in the pod's condition list with matching type.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "conditionType" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/portstatus-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "properties": { 3 | "error": { 4 | "description": "Error is to record the problem with the service port The format of the error shall comply with the following rules: - built-in error values shall be specified in this file and those shall use\n CamelCase names\n- cloud provider specific error values must have names that comply with the\n format foo.example.com/CamelCase.", 5 | "type": [ 6 | "string", 7 | "null" 8 | ] 9 | }, 10 | "port": { 11 | "description": "Port is the port number of the service port of which status is recorded here", 12 | "format": "int32", 13 | "type": [ 14 | "integer", 15 | "null" 16 | ] 17 | }, 18 | "protocol": { 19 | "description": "Protocol is the protocol of the service port of which status is recorded here The supported values are: \"TCP\", \"UDP\", \"SCTP\"\n\n", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "port", 28 | "protocol" 29 | ], 30 | "type": "object", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/portworxvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PortworxVolumeSource represents a Portworx volume resource.", 3 | "properties": { 4 | "fsType": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "readOnly": { 12 | "description": "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.", 13 | "type": [ 14 | "boolean", 15 | "null" 16 | ] 17 | }, 18 | "volumeID": { 19 | "description": "volumeID uniquely identifies a Portworx volume", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "volumeID" 28 | ], 29 | "type": "object", 30 | "additionalProperties": false, 31 | "$schema": "http://json-schema.org/schema#" 32 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/preconditions-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Preconditions must be fulfilled before an operation (update, delete, etc.) is carried out.", 3 | "properties": { 4 | "resourceVersion": { 5 | "description": "Specifies the target ResourceVersion", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "uid": { 12 | "description": "Specifies the target UID.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/prioritylevelconfigurationcondition-flowcontrol-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PriorityLevelConfigurationCondition defines the condition of priority level.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "`message` is a human-readable message indicating details about last transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "`status` is the status of the condition. Can be True, False, Unknown. Required.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "`type` is the type of the condition. Required.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "type": "object", 42 | "additionalProperties": false, 43 | "$schema": "http://json-schema.org/schema#" 44 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/prioritylevelconfigurationcondition-flowcontrol-v1beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PriorityLevelConfigurationCondition defines the condition of priority level.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "`message` is a human-readable message indicating details about last transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "`reason` is a unique, one-word, CamelCase reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "`status` is the status of the condition. Can be True, False, Unknown. Required.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "`type` is the type of the condition. Required.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "type": "object", 42 | "additionalProperties": false, 43 | "$schema": "http://json-schema.org/schema#" 44 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/prioritylevelconfigurationreference-flowcontrol-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PriorityLevelConfigurationReference contains information that points to the \"request-priority\" being used.", 3 | "properties": { 4 | "name": { 5 | "description": "`name` is the name of the priority level configuration being referenced Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/prioritylevelconfigurationreference-flowcontrol-v1beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "PriorityLevelConfigurationReference contains information that points to the \"request-priority\" being used.", 3 | "properties": { 4 | "name": { 5 | "description": "`name` is the name of the priority level configuration being referenced Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/quantity-resource.json: -------------------------------------------------------------------------------- 1 | { 2 | "oneOf": [ 3 | { 4 | "type": "string" 5 | }, 6 | { 7 | "type": "number" 8 | } 9 | ], 10 | "$schema": "http://json-schema.org/schema#", 11 | "type": "object", 12 | "additionalProperties": false 13 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/rawextension-pkg-runtime.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "RawExtension is used to hold extensions in external versions.\n\nTo use this, make a field which has RawExtension as its type in your external, versioned struct, and Object in your internal struct. You also need to register your various plugin types.\n\n// Internal package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.Object `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// External package: type MyAPIObject struct {\n\truntime.TypeMeta `json:\",inline\"`\n\tMyPlugin runtime.RawExtension `json:\"myPlugin\"`\n} type PluginA struct {\n\tAOption string `json:\"aOption\"`\n}\n\n// On the wire, the JSON will look something like this: {\n\t\"kind\":\"MyAPIObject\",\n\t\"apiVersion\":\"v1\",\n\t\"myPlugin\": {\n\t\t\"kind\":\"PluginA\",\n\t\t\"aOption\":\"foo\",\n\t},\n}\n\nSo what happens? Decode first uses json or yaml to unmarshal the serialized data into your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. The next step is to copy (using pkg/conversion) into the internal struct. The runtime package's DefaultScheme has conversion functions installed which will unpack the JSON stored in RawExtension, turning it into the correct object type, and storing it in the Object. (TODO: In the case where the object is of an unknown type, a runtime.Unknown object will be created and stored.)", 3 | "type": "object", 4 | "$schema": "http://json-schema.org/schema#", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/replicasetcondition-apps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ReplicaSetCondition describes the state of a replica set at a certain point.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "A human readable message indicating details about the transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "The reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "Status of the condition, one of True, False, Unknown.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "Type of replica set condition.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "required": [ 42 | "type", 43 | "status" 44 | ], 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/replicationcontrollercondition-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ReplicationControllerCondition describes the state of a replication controller at a certain point.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "A human readable message indicating details about the transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "The reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "Status of the condition, one of True, False, Unknown.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "Type of replication controller condition.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "required": [ 42 | "type", 43 | "status" 44 | ], 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/resourcefieldselector-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ResourceFieldSelector represents container resources (cpu, memory) and their output format", 3 | "properties": { 4 | "containerName": { 5 | "description": "Container name: required for volumes, optional for env vars", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "divisor": { 12 | "oneOf": [ 13 | { 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | { 20 | "type": [ 21 | "number", 22 | "null" 23 | ] 24 | } 25 | ] 26 | }, 27 | "resource": { 28 | "description": "Required: resource to select", 29 | "type": [ 30 | "string", 31 | "null" 32 | ] 33 | } 34 | }, 35 | "required": [ 36 | "resource" 37 | ], 38 | "type": "object", 39 | "x-kubernetes-map-type": "atomic", 40 | "additionalProperties": false, 41 | "$schema": "http://json-schema.org/schema#" 42 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/resourcequotastatus-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ResourceQuotaStatus defines the enforced hard limits and observed use.", 3 | "properties": { 4 | "hard": { 5 | "additionalProperties": { 6 | "oneOf": [ 7 | { 8 | "type": [ 9 | "string", 10 | "null" 11 | ] 12 | }, 13 | { 14 | "type": [ 15 | "number", 16 | "null" 17 | ] 18 | } 19 | ] 20 | }, 21 | "description": "Hard is the set of enforced hard limits for each named resource. More info: https://kubernetes.io/docs/concepts/policy/resource-quotas/", 22 | "type": [ 23 | "object", 24 | "null" 25 | ] 26 | }, 27 | "used": { 28 | "additionalProperties": { 29 | "oneOf": [ 30 | { 31 | "type": [ 32 | "string", 33 | "null" 34 | ] 35 | }, 36 | { 37 | "type": [ 38 | "number", 39 | "null" 40 | ] 41 | } 42 | ] 43 | }, 44 | "description": "Used is the current observed total usage of the resource in the namespace.", 45 | "type": [ 46 | "object", 47 | "null" 48 | ] 49 | } 50 | }, 51 | "type": "object", 52 | "additionalProperties": false, 53 | "$schema": "http://json-schema.org/schema#" 54 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/roleref-rbac-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "RoleRef contains information that points to the role being used", 3 | "properties": { 4 | "apiGroup": { 5 | "description": "APIGroup is the group for the resource being referenced", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "kind": { 12 | "description": "Kind is the type of resource being referenced", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "name": { 19 | "description": "Name is the name of resource being referenced", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "apiGroup", 28 | "kind", 29 | "name" 30 | ], 31 | "type": "object", 32 | "x-kubernetes-map-type": "atomic", 33 | "additionalProperties": false, 34 | "$schema": "http://json-schema.org/schema#" 35 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/rollingupdatedaemonset-apps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Spec to control the desired behavior of daemon set rolling update.", 3 | "properties": { 4 | "maxSurge": { 5 | "oneOf": [ 6 | { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | { 13 | "type": [ 14 | "integer", 15 | "null" 16 | ] 17 | } 18 | ] 19 | }, 20 | "maxUnavailable": { 21 | "oneOf": [ 22 | { 23 | "type": [ 24 | "string", 25 | "null" 26 | ] 27 | }, 28 | { 29 | "type": [ 30 | "integer", 31 | "null" 32 | ] 33 | } 34 | ] 35 | } 36 | }, 37 | "type": "object", 38 | "additionalProperties": false, 39 | "$schema": "http://json-schema.org/schema#" 40 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/rollingupdatedeployment-apps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Spec to control the desired behavior of rolling update.", 3 | "properties": { 4 | "maxSurge": { 5 | "oneOf": [ 6 | { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | { 13 | "type": [ 14 | "integer", 15 | "null" 16 | ] 17 | } 18 | ] 19 | }, 20 | "maxUnavailable": { 21 | "oneOf": [ 22 | { 23 | "type": [ 24 | "string", 25 | "null" 26 | ] 27 | }, 28 | { 29 | "type": [ 30 | "integer", 31 | "null" 32 | ] 33 | } 34 | ] 35 | } 36 | }, 37 | "type": "object", 38 | "additionalProperties": false, 39 | "$schema": "http://json-schema.org/schema#" 40 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/rollingupdatestatefulsetstrategy-apps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "RollingUpdateStatefulSetStrategy is used to communicate parameter for RollingUpdateStatefulSetStrategyType.", 3 | "properties": { 4 | "maxUnavailable": { 5 | "oneOf": [ 6 | { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | { 13 | "type": [ 14 | "integer", 15 | "null" 16 | ] 17 | } 18 | ] 19 | }, 20 | "partition": { 21 | "description": "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.", 22 | "format": "int32", 23 | "type": [ 24 | "integer", 25 | "null" 26 | ] 27 | } 28 | }, 29 | "type": "object", 30 | "additionalProperties": false, 31 | "$schema": "http://json-schema.org/schema#" 32 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/runtimeclassstrategyoptions-policy-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "RuntimeClassStrategyOptions define the strategy that will dictate the allowable RuntimeClasses for a pod.", 3 | "properties": { 4 | "allowedRuntimeClassNames": { 5 | "description": "allowedRuntimeClassNames is an allowlist of RuntimeClass names that may be specified on a pod. A value of \"*\" means that any RuntimeClass name is allowed, and must be the only item in the list. An empty list requires the RuntimeClassName field to be unset.", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | }, 17 | "defaultRuntimeClassName": { 18 | "description": "defaultRuntimeClassName is the default RuntimeClassName to set on the pod. The default MUST be allowed by the allowedRuntimeClassNames list. A value of nil does not mutate the Pod.", 19 | "type": [ 20 | "string", 21 | "null" 22 | ] 23 | } 24 | }, 25 | "required": [ 26 | "allowedRuntimeClassNames" 27 | ], 28 | "type": "object", 29 | "additionalProperties": false, 30 | "$schema": "http://json-schema.org/schema#" 31 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/scalespec-autoscaling-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ScaleSpec describes the attributes of a scale subresource.", 3 | "properties": { 4 | "replicas": { 5 | "description": "desired number of instances for the scaled object.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | } 12 | }, 13 | "type": "object", 14 | "additionalProperties": false, 15 | "$schema": "http://json-schema.org/schema#" 16 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/scalestatus-autoscaling-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ScaleStatus represents the current status of a scale subresource.", 3 | "properties": { 4 | "replicas": { 5 | "description": "actual number of observed instances of the scaled object.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | }, 12 | "selector": { 13 | "description": "label query over pods that should match the replicas count. This is same as the label selector but in the string format to avoid introspection by clients. The string will be in the same format as the query-param syntax. More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | } 19 | }, 20 | "required": [ 21 | "replicas" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/scopedresourceselectorrequirement-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "A scoped-resource selector requirement is a selector that contains values, a scope name, and an operator that relates the scope name and values.", 3 | "properties": { 4 | "operator": { 5 | "description": "Represents a scope's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist.\n\n", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "scopeName": { 12 | "description": "The name of the scope that the selector applies to.\n\n", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "values": { 19 | "description": "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.", 20 | "items": { 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "type": [ 27 | "array", 28 | "null" 29 | ] 30 | } 31 | }, 32 | "required": [ 33 | "scopeName", 34 | "operator" 35 | ], 36 | "type": "object", 37 | "additionalProperties": false, 38 | "$schema": "http://json-schema.org/schema#" 39 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/seccompprofile-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set.", 3 | "properties": { 4 | "localhostProfile": { 5 | "description": "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 only be set if type is \"Localhost\".", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "type": { 12 | "description": "type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - 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.\n\n", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "type" 21 | ], 22 | "type": "object", 23 | "x-kubernetes-unions": [ 24 | { 25 | "discriminator": "type", 26 | "fields-to-discriminateBy": { 27 | "localhostProfile": "LocalhostProfile" 28 | } 29 | } 30 | ], 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/secretenvsource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables.", 3 | "properties": { 4 | "name": { 5 | "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "optional": { 12 | "description": "Specify whether the Secret must be defined", 13 | "type": [ 14 | "boolean", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/secretkeyselector-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "SecretKeySelector selects a key of a Secret.", 3 | "properties": { 4 | "key": { 5 | "description": "The key of the secret to select from. Must be a valid secret key.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "name": { 12 | "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "optional": { 19 | "description": "Specify whether the Secret or its key must be defined", 20 | "type": [ 21 | "boolean", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "key" 28 | ], 29 | "type": "object", 30 | "x-kubernetes-map-type": "atomic", 31 | "additionalProperties": false, 32 | "$schema": "http://json-schema.org/schema#" 33 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/secretreference-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "SecretReference represents a Secret Reference. It has enough information to retrieve secret in any namespace", 3 | "properties": { 4 | "name": { 5 | "description": "name is unique within a namespace to reference a secret resource.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "namespace": { 12 | "description": "namespace defines the space within which the secret name must be unique.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "x-kubernetes-map-type": "atomic", 21 | "additionalProperties": false, 22 | "$schema": "http://json-schema.org/schema#" 23 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/selfsubjectrulesreviewspec-authorization-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "SelfSubjectRulesReviewSpec defines the specification for SelfSubjectRulesReview.", 3 | "properties": { 4 | "namespace": { 5 | "description": "Namespace to evaluate rules for. Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "type": "object", 13 | "additionalProperties": false, 14 | "$schema": "http://json-schema.org/schema#" 15 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/selinuxoptions-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "SELinuxOptions are the labels to be applied to the container", 3 | "properties": { 4 | "level": { 5 | "description": "Level is SELinux level label that applies to the container.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "role": { 12 | "description": "Role is a SELinux role label that applies to the container.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "type": { 19 | "description": "Type is a SELinux type label that applies to the container.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "user": { 26 | "description": "User is a SELinux user label that applies to the container.", 27 | "type": [ 28 | "string", 29 | "null" 30 | ] 31 | } 32 | }, 33 | "type": "object", 34 | "additionalProperties": false, 35 | "$schema": "http://json-schema.org/schema#" 36 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/serveraddressbyclientcidr-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ServerAddressByClientCIDR helps the client to determine the server address that they should use, depending on the clientCIDR that they match.", 3 | "properties": { 4 | "clientCIDR": { 5 | "description": "The CIDR with which clients can match their IP to figure out the server address that they should use.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "serverAddress": { 12 | "description": "Address of this server, suitable for a client that matches the above CIDR. This can be a hostname, hostname:port, IP or IP:port.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "clientCIDR", 21 | "serverAddress" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/serverstorageversion-apiserverinternal-v1alpha1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "An API server instance reports the version it can decode and the version it encodes objects to when persisting objects in the backend.", 3 | "properties": { 4 | "apiServerID": { 5 | "description": "The ID of the reporting API server.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "decodableVersions": { 12 | "description": "The API server can decode objects encoded in these versions. The encodingVersion must be included in the decodableVersions.", 13 | "items": { 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "type": [ 20 | "array", 21 | "null" 22 | ], 23 | "x-kubernetes-list-type": "set" 24 | }, 25 | "encodingVersion": { 26 | "description": "The API server encodes the object to this version when persisting it in the backend (e.g., etcd).", 27 | "type": [ 28 | "string", 29 | "null" 30 | ] 31 | } 32 | }, 33 | "type": "object", 34 | "additionalProperties": false, 35 | "$schema": "http://json-schema.org/schema#" 36 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/serviceaccountsubject-flowcontrol-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ServiceAccountSubject holds detailed information for service-account-kind subject.", 3 | "properties": { 4 | "name": { 5 | "description": "`name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "namespace": { 12 | "description": "`namespace` is the namespace of matching ServiceAccount objects. Required.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "namespace", 21 | "name" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/serviceaccountsubject-flowcontrol-v1beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ServiceAccountSubject holds detailed information for service-account-kind subject.", 3 | "properties": { 4 | "name": { 5 | "description": "`name` is the name of matching ServiceAccount objects, or \"*\" to match regardless of name. Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "namespace": { 12 | "description": "`namespace` is the namespace of matching ServiceAccount objects. Required.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "namespace", 21 | "name" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/servicebackendport-networking-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ServiceBackendPort is the service port being referenced.", 3 | "properties": { 4 | "name": { 5 | "description": "Name is the name of the port on the Service. This is a mutually exclusive setting with \"Number\".", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "number": { 12 | "description": "Number is the numerical port number (e.g. 80) on the Service. This is a mutually exclusive setting with \"Name\".", 13 | "format": "int32", 14 | "type": [ 15 | "integer", 16 | "null" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "$schema": "http://json-schema.org/schema#" 23 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/servicereference-admissionregistration-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ServiceReference holds a reference to Service.legacy.k8s.io", 3 | "properties": { 4 | "name": { 5 | "description": "`name` is the name of the service. Required", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "namespace": { 12 | "description": "`namespace` is the namespace of the service. Required", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "path": { 19 | "description": "`path` is an optional URL path which will be sent in any request to this service.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "port": { 26 | "description": "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).", 27 | "format": "int32", 28 | "type": [ 29 | "integer", 30 | "null" 31 | ] 32 | } 33 | }, 34 | "required": [ 35 | "namespace", 36 | "name" 37 | ], 38 | "type": "object", 39 | "additionalProperties": false, 40 | "$schema": "http://json-schema.org/schema#" 41 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/servicereference-apiextensions-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ServiceReference holds a reference to Service.legacy.k8s.io", 3 | "properties": { 4 | "name": { 5 | "description": "name is the name of the service. Required", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "namespace": { 12 | "description": "namespace is the namespace of the service. Required", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "path": { 19 | "description": "path is an optional URL path at which the webhook will be contacted.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "port": { 26 | "description": "port is an optional service port at which the webhook will be contacted. `port` should be a valid port number (1-65535, inclusive). Defaults to 443 for backward compatibility.", 27 | "format": "int32", 28 | "type": [ 29 | "integer", 30 | "null" 31 | ] 32 | } 33 | }, 34 | "required": [ 35 | "namespace", 36 | "name" 37 | ], 38 | "type": "object", 39 | "additionalProperties": false, 40 | "$schema": "http://json-schema.org/schema#" 41 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/servicereference-apiregistration-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "ServiceReference holds a reference to Service.legacy.k8s.io", 3 | "properties": { 4 | "name": { 5 | "description": "Name is the name of the service", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "namespace": { 12 | "description": "Namespace is the namespace of the service", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "port": { 19 | "description": "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).", 20 | "format": "int32", 21 | "type": [ 22 | "integer", 23 | "null" 24 | ] 25 | } 26 | }, 27 | "type": "object", 28 | "additionalProperties": false, 29 | "$schema": "http://json-schema.org/schema#" 30 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/sessionaffinityconfig-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "SessionAffinityConfig represents the configurations of session affinity.", 3 | "properties": { 4 | "clientIP": { 5 | "description": "ClientIPConfig represents the configurations of Client IP based session affinity.", 6 | "properties": { 7 | "timeoutSeconds": { 8 | "description": "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).", 9 | "format": "int32", 10 | "type": [ 11 | "integer", 12 | "null" 13 | ] 14 | } 15 | }, 16 | "type": [ 17 | "object", 18 | "null" 19 | ], 20 | "additionalProperties": false 21 | } 22 | }, 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/statefulsetcondition-apps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "StatefulSetCondition describes the state of a statefulset at a certain point.", 3 | "properties": { 4 | "lastTransitionTime": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "message": { 13 | "description": "A human readable message indicating details about the transition.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "reason": { 20 | "description": "The reason for the condition's last transition.", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "status": { 27 | "description": "Status of the condition, one of True, False, Unknown.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | }, 33 | "type": { 34 | "description": "Type of statefulset condition.", 35 | "type": [ 36 | "string", 37 | "null" 38 | ] 39 | } 40 | }, 41 | "required": [ 42 | "type", 43 | "status" 44 | ], 45 | "type": "object", 46 | "additionalProperties": false, 47 | "$schema": "http://json-schema.org/schema#" 48 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/statefulsetpersistentvolumeclaimretentionpolicy-apps-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates.", 3 | "properties": { 4 | "whenDeleted": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "whenScaled": { 12 | "description": "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.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "type": "object", 20 | "additionalProperties": false, 21 | "$schema": "http://json-schema.org/schema#" 22 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/statuscause-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered.", 3 | "properties": { 4 | "field": { 5 | "description": "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.\n\nExamples:\n \"name\" - the field \"name\" on the current resource\n \"items[0].name\" - the field \"name\" on the first array entry in \"items\"", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "message": { 12 | "description": "A human-readable description of the cause of the error. This field may be presented as-is to a reader.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "reason": { 19 | "description": "A machine-readable description of the cause of the error. If this value is empty there is no information available.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "type": "object", 27 | "additionalProperties": false, 28 | "$schema": "http://json-schema.org/schema#" 29 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/storageversionspec-apiserverinternal-v1alpha1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "StorageVersionSpec is an empty spec.", 3 | "type": "object", 4 | "$schema": "http://json-schema.org/schema#", 5 | "additionalProperties": false 6 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/subjectaccessreviewstatus-authorization-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "SubjectAccessReviewStatus", 3 | "properties": { 4 | "allowed": { 5 | "description": "Allowed is required. True if the action would be allowed, false otherwise.", 6 | "type": [ 7 | "boolean", 8 | "null" 9 | ] 10 | }, 11 | "denied": { 12 | "description": "Denied is optional. True if the action would be denied, otherwise false. If both allowed is false and denied is false, then the authorizer has no opinion on whether to authorize the action. Denied may not be true if Allowed is true.", 13 | "type": [ 14 | "boolean", 15 | "null" 16 | ] 17 | }, 18 | "evaluationError": { 19 | "description": "EvaluationError is an indication that some error occurred during the authorization check. It is entirely possible to get an error and be able to continue determine authorization status in spite of it. For instance, RBAC can be missing a role, but enough roles are still present and bound to reason about the request.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "reason": { 26 | "description": "Reason is optional. It indicates why a request was allowed or denied.", 27 | "type": [ 28 | "string", 29 | "null" 30 | ] 31 | } 32 | }, 33 | "required": [ 34 | "allowed" 35 | ], 36 | "type": "object", 37 | "additionalProperties": false, 38 | "$schema": "http://json-schema.org/schema#" 39 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/sysctl-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Sysctl defines a kernel parameter to be set", 3 | "properties": { 4 | "name": { 5 | "description": "Name of a property to set", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "value": { 12 | "description": "Value of a property to set", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "name", 21 | "value" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/taint-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "The node this Taint is attached to has the \"effect\" on any pod that does not tolerate the Taint.", 3 | "properties": { 4 | "effect": { 5 | "description": "Required. The effect of the taint on pods that do not tolerate the taint. Valid effects are NoSchedule, PreferNoSchedule and NoExecute.\n\n", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "key": { 12 | "description": "Required. The taint key to be applied to a node.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "timeAdded": { 19 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 20 | "format": "date-time", 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "value": { 27 | "description": "The taint value corresponding to the taint key.", 28 | "type": [ 29 | "string", 30 | "null" 31 | ] 32 | } 33 | }, 34 | "required": [ 35 | "key", 36 | "effect" 37 | ], 38 | "type": "object", 39 | "additionalProperties": false, 40 | "$schema": "http://json-schema.org/schema#" 41 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/tcpsocketaction-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "TCPSocketAction describes an action based on opening a socket", 3 | "properties": { 4 | "host": { 5 | "description": "Optional: Host name to connect to, defaults to the pod IP.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "port": { 12 | "oneOf": [ 13 | { 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | { 20 | "type": [ 21 | "integer", 22 | "null" 23 | ] 24 | } 25 | ] 26 | } 27 | }, 28 | "required": [ 29 | "port" 30 | ], 31 | "type": "object", 32 | "additionalProperties": false, 33 | "$schema": "http://json-schema.org/schema#" 34 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/time-meta-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 3 | "format": "date-time", 4 | "type": "string", 5 | "$schema": "http://json-schema.org/schema#", 6 | "additionalProperties": false 7 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/tokenrequest-storage-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "TokenRequest contains parameters of a service account token.", 3 | "properties": { 4 | "audience": { 5 | "description": "Audience is the intended audience of the token in \"TokenRequestSpec\". It will default to the audiences of kube apiserver.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "expirationSeconds": { 12 | "description": "ExpirationSeconds is the duration of validity of the token in \"TokenRequestSpec\". It has the same default value of \"ExpirationSeconds\" in \"TokenRequestSpec\".", 13 | "format": "int64", 14 | "type": [ 15 | "integer", 16 | "null" 17 | ] 18 | } 19 | }, 20 | "required": [ 21 | "audience" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/tokenrequeststatus-authentication-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "TokenRequestStatus is the result of a token request.", 3 | "properties": { 4 | "expirationTimestamp": { 5 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 6 | "format": "date-time", 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "token": { 13 | "description": "Token is the opaque bearer token.", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | } 19 | }, 20 | "required": [ 21 | "token", 22 | "expirationTimestamp" 23 | ], 24 | "type": "object", 25 | "additionalProperties": false, 26 | "$schema": "http://json-schema.org/schema#" 27 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/tokenreviewspec-authentication-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "TokenReviewSpec is a description of the token authentication request.", 3 | "properties": { 4 | "audiences": { 5 | "description": "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.", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | }, 17 | "token": { 18 | "description": "Token is the opaque bearer token.", 19 | "type": [ 20 | "string", 21 | "null" 22 | ] 23 | } 24 | }, 25 | "type": "object", 26 | "additionalProperties": false, 27 | "$schema": "http://json-schema.org/schema#" 28 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/topologyselectorlabelrequirement-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "A topology selector requirement is a selector that matches given label. This is an alpha feature and may change in the future.", 3 | "properties": { 4 | "key": { 5 | "description": "The label key that the selector applies to.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "values": { 12 | "description": "An array of string values. One value must match the label to be selected. Each entry in Values is ORed.", 13 | "items": { 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | }, 19 | "type": [ 20 | "array", 21 | "null" 22 | ] 23 | } 24 | }, 25 | "required": [ 26 | "key", 27 | "values" 28 | ], 29 | "type": "object", 30 | "additionalProperties": false, 31 | "$schema": "http://json-schema.org/schema#" 32 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/typedlocalobjectreference-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.", 3 | "properties": { 4 | "apiGroup": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "kind": { 12 | "description": "Kind is the type of resource being referenced", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "name": { 19 | "description": "Name is the name of resource being referenced", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | } 25 | }, 26 | "required": [ 27 | "kind", 28 | "name" 29 | ], 30 | "type": "object", 31 | "x-kubernetes-map-type": "atomic", 32 | "additionalProperties": false, 33 | "$schema": "http://json-schema.org/schema#" 34 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/uncountedterminatedpods-batch-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.", 3 | "properties": { 4 | "failed": { 5 | "description": "Failed holds UIDs of failed Pods.", 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ], 16 | "x-kubernetes-list-type": "set" 17 | }, 18 | "succeeded": { 19 | "description": "Succeeded holds UIDs of succeeded Pods.", 20 | "items": { 21 | "type": [ 22 | "string", 23 | "null" 24 | ] 25 | }, 26 | "type": [ 27 | "array", 28 | "null" 29 | ], 30 | "x-kubernetes-list-type": "set" 31 | } 32 | }, 33 | "type": "object", 34 | "additionalProperties": false, 35 | "$schema": "http://json-schema.org/schema#" 36 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/userinfo-authentication-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "UserInfo holds the information about the user needed to implement the user.Info interface.", 3 | "properties": { 4 | "extra": { 5 | "additionalProperties": { 6 | "items": { 7 | "type": [ 8 | "string", 9 | "null" 10 | ] 11 | }, 12 | "type": [ 13 | "array", 14 | "null" 15 | ] 16 | }, 17 | "description": "Any additional information provided by the authenticator.", 18 | "type": [ 19 | "object", 20 | "null" 21 | ] 22 | }, 23 | "groups": { 24 | "description": "The names of groups this user is a part of.", 25 | "items": { 26 | "type": [ 27 | "string", 28 | "null" 29 | ] 30 | }, 31 | "type": [ 32 | "array", 33 | "null" 34 | ] 35 | }, 36 | "uid": { 37 | "description": "A unique value that identifies this user across time. If this user is deleted and another user by the same name is added, they will have different UIDs.", 38 | "type": [ 39 | "string", 40 | "null" 41 | ] 42 | }, 43 | "username": { 44 | "description": "The name that uniquely identifies this user among all active users.", 45 | "type": [ 46 | "string", 47 | "null" 48 | ] 49 | } 50 | }, 51 | "type": "object", 52 | "additionalProperties": false, 53 | "$schema": "http://json-schema.org/schema#" 54 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/usersubject-flowcontrol-v1beta1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "UserSubject holds detailed information for user-kind subject.", 3 | "properties": { 4 | "name": { 5 | "description": "`name` is the username that matches, or \"*\" to match all usernames. Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/usersubject-flowcontrol-v1beta2.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "UserSubject holds detailed information for user-kind subject.", 3 | "properties": { 4 | "name": { 5 | "description": "`name` is the username that matches, or \"*\" to match all usernames. Required.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | } 11 | }, 12 | "required": [ 13 | "name" 14 | ], 15 | "type": "object", 16 | "additionalProperties": false, 17 | "$schema": "http://json-schema.org/schema#" 18 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/volumedevice-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "volumeDevice describes a mapping of a raw block device within a container.", 3 | "properties": { 4 | "devicePath": { 5 | "description": "devicePath is the path inside of the container that the device will be mapped to.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "name": { 12 | "description": "name must match the name of a persistentVolumeClaim in the pod", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | } 18 | }, 19 | "required": [ 20 | "name", 21 | "devicePath" 22 | ], 23 | "type": "object", 24 | "additionalProperties": false, 25 | "$schema": "http://json-schema.org/schema#" 26 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/volumeerror-storage-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "VolumeError captures an error encountered during a volume operation.", 3 | "properties": { 4 | "message": { 5 | "description": "String detailing the error encountered during Attach or Detach operation. This string may be logged, so it should not contain sensitive information.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "time": { 12 | "description": "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON. Wrappers are provided for many of the factory methods that the time package offers.", 13 | "format": "date-time", 14 | "type": [ 15 | "string", 16 | "null" 17 | ] 18 | } 19 | }, 20 | "type": "object", 21 | "additionalProperties": false, 22 | "$schema": "http://json-schema.org/schema#" 23 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/volumenoderesources-storage-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "VolumeNodeResources is a set of resource limits for scheduling of volumes.", 3 | "properties": { 4 | "count": { 5 | "description": "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.", 6 | "format": "int32", 7 | "type": [ 8 | "integer", 9 | "null" 10 | ] 11 | } 12 | }, 13 | "type": "object", 14 | "additionalProperties": false, 15 | "$schema": "http://json-schema.org/schema#" 16 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/k8s.io/vspherevirtualdiskvolumesource-v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "description": "Represents a vSphere volume resource.", 3 | "properties": { 4 | "fsType": { 5 | "description": "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.", 6 | "type": [ 7 | "string", 8 | "null" 9 | ] 10 | }, 11 | "storagePolicyID": { 12 | "description": "storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName.", 13 | "type": [ 14 | "string", 15 | "null" 16 | ] 17 | }, 18 | "storagePolicyName": { 19 | "description": "storagePolicyName is the storage Policy Based Management (SPBM) profile name.", 20 | "type": [ 21 | "string", 22 | "null" 23 | ] 24 | }, 25 | "volumePath": { 26 | "description": "volumePath is the path that identifies vSphere volume vmdk", 27 | "type": [ 28 | "string", 29 | "null" 30 | ] 31 | } 32 | }, 33 | "required": [ 34 | "volumePath" 35 | ], 36 | "type": "object", 37 | "additionalProperties": false, 38 | "$schema": "http://json-schema.org/schema#" 39 | } -------------------------------------------------------------------------------- /src/test/kotlin/com/redhat/devtools/intellij/kubernetes/model/mocks/PodContainer.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2024 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.model.mocks 12 | 13 | import io.fabric8.kubernetes.api.model.Container 14 | import io.fabric8.kubernetes.api.model.ContainerBuilder 15 | import io.fabric8.kubernetes.api.model.ContainerStatus 16 | import io.fabric8.kubernetes.api.model.Pod 17 | import io.fabric8.kubernetes.api.model.PodBuilder 18 | 19 | object PodContainer { 20 | 21 | fun podWithContainer(status: ContainerStatus): Pod { 22 | return PodBuilder() 23 | .withNewSpec() 24 | .withContainers( 25 | ContainerBuilder() 26 | .withName(status.name) 27 | .build() 28 | ) 29 | .endSpec() 30 | .withNewStatus() 31 | .withContainerStatuses(status) 32 | .endStatus() 33 | .build() 34 | } 35 | 36 | fun podWithContainer(container: Container): Pod { 37 | return PodBuilder() 38 | .withNewSpec() 39 | .withContainers(container) 40 | .endSpec() 41 | .build() 42 | } 43 | } -------------------------------------------------------------------------------- /src/test/kotlin/com/redhat/devtools/intellij/kubernetes/tree/PluginXmlIconsTest.kt: -------------------------------------------------------------------------------- 1 | /******************************************************************************* 2 | * Copyright (c) 2021 Red Hat, Inc. 3 | * Distributed under license by Red Hat, Inc. All rights reserved. 4 | * This program is made available under the terms of the 5 | * Eclipse Public License v2.0 which accompanies this distribution, 6 | * and is available at http://www.eclipse.org/legal/epl-v20.html 7 | * 8 | * Contributors: 9 | * Red Hat, Inc. - initial API and implementation 10 | ******************************************************************************/ 11 | package com.redhat.devtools.intellij.kubernetes.tree 12 | 13 | import com.intellij.icons.AllIcons 14 | import org.assertj.core.api.Assertions.assertThat 15 | import org.junit.Test 16 | 17 | /** 18 | * Test that assert that icons that are referenced in plugin.xml can be loaded. 19 | */ 20 | class PluginXmlIconsTest { 21 | 22 | @Test 23 | fun `AllIcons#Actions#Close exists`() { 24 | // when 25 | val icon = AllIcons.Actions.Close 26 | // then 27 | assertThat(icon).isNotNull 28 | } 29 | 30 | @Test 31 | fun `AllIcons#Actions#Refresh exists`() { 32 | // when 33 | val icon = AllIcons.Actions.Refresh 34 | // then 35 | assertThat(icon).isNotNull 36 | } 37 | 38 | @Test 39 | fun `AllIcons#Nodes#EmptyNode exists`() { 40 | // given 41 | // when 42 | val icon = AllIcons.Nodes.EmptyNode 43 | // then 44 | assertThat(icon).isNotNull 45 | } 46 | 47 | } -------------------------------------------------------------------------------- /src/test/resources/mockito-extensions/org.mokito.plugins.MockMaker: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redhat-developer/intellij-kubernetes/73b051cbe8ff7fcdbdd4eee5e0f571e035e90f06/src/test/resources/mockito-extensions/org.mokito.plugins.MockMaker --------------------------------------------------------------------------------