Merge pull request #848 from tomplus/fix/example-crd

add example of using custom resources
This commit is contained in:
Kubernetes Prow Robot 2019-07-26 13:15:59 -07:00 committed by GitHub
commit 5a53aea3a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 93 additions and 40 deletions

View File

@ -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)
```

93
examples/custom_object.py Normal file
View File

@ -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()