diff --git a/examples/create_thirdparty_resource.md b/examples/create_thirdparty_resource.md deleted file mode 100644 index ec5975ad0a..0000000000 --- a/examples/create_thirdparty_resource.md +++ /dev/null @@ -1,40 +0,0 @@ -## Creating a Third Party Resource - -``` -from __future__ import print_function - -from pprint import pprint - -import kubernetes -from kubernetes import config -from kubernetes.rest import ApiException - -config.load_kube_config() -api_instance = kubernetes.ThirdPartyResources() - -namespace = 'default' -resource = 'repos' -fqdn = 'git.k8s.com' - -body = {} -body['apiVersion'] = "git.k8s.com/v1" -body['kind'] = "RePo" -body['metadata'] = {} -body['metadata']['name'] = "blog-repo" -body['repo'] = "github.com/user/my-blog" -body['username'] = "username" -body['password'] = "password" -body['branch'] = "branch" - - - -try: - # Create a Resource - api_response = api_instance.apis_fqdn_v1_namespaces_namespace_resource_post( - namespace, fqdn, resource, body) - pprint(api_response) -except ApiException as e: - print( - "Exception when calling DefaultApi->apis_fqdn_v1_namespaces_namespace_resource_post: %s\n" % - e) -``` \ No newline at end of file diff --git a/examples/custom_object.py b/examples/custom_object.py new file mode 100644 index 0000000000..87524c006a --- /dev/null +++ b/examples/custom_object.py @@ -0,0 +1,93 @@ +# Copyright 2019 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This example use an example CRD from this tutorial: +# https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/ +# +# The following yaml manifest has to be applied first: +# +# apiVersion: apiextensions.k8s.io/v1beta1 +# kind: CustomResourceDefinition +# metadata: +# name: crontabs.stable.example.com +# spec: +# group: stable.example.com +# versions: +# - name: v1 +# served: true +# storage: true +# scope: Namespaced +# names: +# plural: crontabs +# singular: crontab +# kind: CronTab +# shortNames: +# - ct + + +from pprint import pprint + +from kubernetes import client, config + + +def main(): + + config.load_kube_config() + + api = client.CustomObjectsApi() + + # it's my custom resource defined as Dict + my_resource = { + "apiVersion": "stable.example.com/v1", + "kind": "CronTab", + "metadata": {"name": "my-new-cron-object"}, + "cronSpec": "* * * * */5", + "image": "my-awesome-cron-image", + } + + # create the resource + api.create_namespaced_custom_object( + group="stable.example.com", + version="v1", + namespace="default", + plural="crontabs", + body=my_resource, + ) + print("Resource created") + + # get the resource and print out data + resource = api.get_namespaced_custom_object( + group="stable.example.com", + version="v1", + name="my-new-cron-object", + namespace="default", + plural="crontabs", + ) + print("Resource details:") + pprint(resource) + + # delete it + api.delete_namespaced_custom_object( + group="stable.example.com", + version="v1", + name="my-new-cron-object", + namespace="default", + plural="crontabs", + body=client.V1DeleteOptions(), + ) + print("Resource deleted") + + +if __name__ == "__main__": + main()