Skip to content

Commit b54683d

Browse files
committed
Simply calling mechanism
1 parent 9a1f055 commit b54683d

File tree

3 files changed

+41
-57
lines changed

3 files changed

+41
-57
lines changed

examples/create_deployment_from_yaml.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@
1414

1515
from os import path
1616

17-
from kubernetes import config, utils
17+
from kubernetes import client, config, utils
1818

1919

2020
def main():
2121
# Configs can be set in Configuration class directly or using helper
2222
# utility. If no argument provided, the config will be loaded from
2323
# default location.
2424
config.load_kube_config()
25-
k8s_api = utils.create_from_yaml("nginx-deployment.yaml")
25+
k8s_client = client.ApiClient()
26+
k8s_api = utils.create_from_yaml(k8s_client, "nginx-deployment.yaml")
2627
deps = k8s_api.read_namespaced_deployment("nginx-deployment", "default")
2728
print("Deployment {0} created".format(deps.metadata.name))
2829

kubernetes/e2e_test/test_utils.py

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -24,96 +24,93 @@ def setUpClass(cls):
2424
cls.config = base.get_e2e_configuration()
2525

2626
def test_app_yaml(self):
27-
k8s_api = utils.create_from_yaml(
28-
"kubernetes/e2e_test/test_yaml/apps-deployment.yaml",
29-
configuration=self.config)
27+
k8s_client = client.api_client.ApiClient(configuration=self.config)
28+
k8s_api = utils.create_from_yaml(k8s_client,
29+
"kubernetes/e2e_test/test_yaml/apps-deployment.yaml")
3030
self.assertEqual("apps/v1beta1",
3131
k8s_api.get_api_resources().group_version)
3232
dep = k8s_api.read_namespaced_deployment(name="nginx-app",
3333
namespace="default")
34-
self.assertEqual("nginx-app", dep.metadata.name)
34+
self.assertIsNotNone(dep)
3535
resp = k8s_api.delete_namespaced_deployment(
3636
name="nginx-app", namespace="default",
3737
body={})
3838

3939
def test_extension_yaml(self):
40-
k8s_api = utils.create_from_yaml(
41-
"kubernetes/e2e_test/test_yaml/extensions-deployment.yaml",
42-
configuration=self.config)
40+
k8s_client = client.api_client.ApiClient(configuration=self.config)
41+
k8s_api = utils.create_from_yaml(k8s_client,
42+
"kubernetes/e2e_test/test_yaml/extensions-deployment.yaml")
4343
self.assertEqual("extensions/v1beta1",
4444
k8s_api.get_api_resources().group_version)
4545
dep = k8s_api.read_namespaced_deployment(name="nginx-deployment",
4646
namespace="default")
47-
self.assertEqual("nginx-deployment", dep.metadata.name)
47+
self.assertIsNotNone(dep)
4848
resp = k8s_api.delete_namespaced_deployment(
4949
name="nginx-deployment", namespace="default",
5050
body={})
5151

5252
def test_core_pod_yaml(self):
53-
k8s_api = utils.create_from_yaml(
54-
"kubernetes/e2e_test/test_yaml/core-pod.yaml",
55-
configuration=self.config)
53+
k8s_client = client.api_client.ApiClient(configuration=self.config)
54+
k8s_api = utils.create_from_yaml(k8s_client,
55+
"kubernetes/e2e_test/test_yaml/core-pod.yaml")
5656
self.assertEqual("v1",
5757
k8s_api.get_api_resources().group_version)
5858
pod = k8s_api.read_namespaced_pod(name="myapp-pod",
5959
namespace="default")
60-
self.assertEqual("myapp-pod", pod.metadata.name)
60+
self.assertIsNotNone(pod)
6161
resp = k8s_api.delete_namespaced_pod(
6262
name="myapp-pod", namespace="default",
6363
body={})
6464

6565
def test_core_service_yaml(self):
66-
k8s_api = utils.create_from_yaml(
67-
"kubernetes/e2e_test/test_yaml/core-service.yaml",
68-
configuration=self.config)
66+
k8s_client = client.api_client.ApiClient(configuration=self.config)
67+
k8s_api = utils.create_from_yaml(k8s_client,
68+
"kubernetes/e2e_test/test_yaml/core-service.yaml")
6969
self.assertEqual("v1",
7070
k8s_api.get_api_resources().group_version)
7171
svc = k8s_api.read_namespaced_service(name="my-service",
7272
namespace="default")
73-
self.assertEqual("my-service", svc.metadata.name)
73+
self.assertIsNotNone(svc)
7474
resp = k8s_api.delete_namespaced_service(
7575
name="my-service", namespace="default",
7676
body={})
7777

7878
def test_core_namespace_yaml(self):
79-
k8s_api = utils.create_from_yaml(
80-
"kubernetes/e2e_test/test_yaml/core-namespace.yaml",
81-
configuration=self.config)
79+
k8s_client = client.api_client.ApiClient(configuration=self.config)
80+
k8s_api = utils.create_from_yaml(k8s_client,
81+
"kubernetes/e2e_test/test_yaml/core-namespace.yaml")
8282
self.assertEqual("v1",
8383
k8s_api.get_api_resources().group_version)
8484
nmsp = k8s_api.read_namespace(name="development")
85-
self.assertEqual("development", nmsp.metadata.name)
85+
self.assertIsNotNone(nmsp)
8686
resp = k8s_api.delete_namespace(name="development", body={})
8787

8888
def test_deployment_in_namespace(self):
8989
k8s_client = client.ApiClient(configuration=self.config)
90-
core_api = client.CoreV1Api(k8s_client)
91-
core_api = utils.create_from_yaml(
92-
"kubernetes/e2e_test/test_yaml/core-namespace-dep.yaml",
93-
configuration=self.config)
90+
core_api = utils.create_from_yaml(k8s_client,
91+
"kubernetes/e2e_test/test_yaml/core-namespace-dep.yaml")
9492
self.assertEqual("v1",
9593
core_api.get_api_resources().group_version)
9694
nmsp = core_api.read_namespace(name="dep")
97-
self.assertEqual("dep", nmsp.metadata.name)
98-
dep_api = utils.create_from_yaml(
99-
"kubernetes/e2e_test/test_yaml/extensions-deployment-dep.yaml",
100-
configuration=self.config)
95+
self.assertIsNotNone(nmsp)
96+
dep_api = utils.create_from_yaml(k8s_client,
97+
"kubernetes/e2e_test/test_yaml/extensions-deployment-dep.yaml")
10198
dep = dep_api.read_namespaced_deployment(name="nginx-deployment",
10299
namespace="dep")
103-
self.assertEqual("nginx-deployment", dep.metadata.name)
100+
self.assertIsNotNone(dep)
104101
resp = dep_api.delete_namespaced_deployment(
105102
name="nginx-deployment", namespace="dep",
106103
body={})
107104
resp = core_api.delete_namespace(name="dep", body={})
108105

109106
def test_api_service(self):
110-
k8s_api = utils.create_from_yaml(
111-
"kubernetes/e2e_test/test_yaml/api-service.yaml",
112-
configuration=self.config)
107+
k8s_client = client.api_client.ApiClient(configuration=self.config)
108+
k8s_api = utils.create_from_yaml(k8s_client,
109+
"kubernetes/e2e_test/test_yaml/api-service.yaml")
113110
self.assertEqual("apiregistration.k8s.io/v1beta1",
114111
k8s_api.get_api_resources().group_version)
115112
svc = k8s_api.read_api_service(
116113
name="v1alpha1.wardle.k8s.io")
117-
self.assertEqual("v1alpha1.wardle.k8s.io", svc.metadata.name)
114+
self.assertIsNotNone(svc)
118115
resp = k8s_api.delete_api_service(
119116
name="v1alpha1.wardle.k8s.io", body={})

kubernetes/utils/create_from_yaml.py

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,39 +22,25 @@
2222

2323
from kubernetes import client
2424

25-
def create_from_yaml(yaml_file, verbose=False, **kwargs):
25+
def create_from_yaml(k8s_client, yaml_file, verbose=False, **kwargs):
2626
"""
2727
Perform an action from a yaml file. Pass 1 for verbose to
2828
print confirmation information.
29-
30-
Available parameters for generating the client:
31-
:param configuration: Configuration for the client.
32-
:param host: The base path for the server to call.
33-
:param header_name: a header to pass when making calls to the API.
34-
:param header_value: a header value to pass when making calls to the API.
29+
30+
Input:
31+
yaml_file: string. Contains the path to yaml file.
32+
k8s_cline: an ApiClient object, initialized with the client args.
3533
3634
Available parameters for performing the subsequent action:
3735
:param async_req bool
3836
:param bool include_uninitialized: If true, partially initialized resources are included in the response.
3937
:param str pretty: If 'true', then the output is pretty printed.
4038
:param str dry_run: When present, indicates that modifications should not be persisted. An invalid or unrecognized dryRun directive will result in an error response and no further processing of the request. Valid values are: - All: all dry run stages will be processed
4139
"""
42-
43-
client_params = ["configuration", "host", "header_name", "header_value"]
44-
action_params = ["async_req", "include_unitialized", "pretty", "dry_run",
45-
'_return_http_data_only', '_preload_content', '_request_timeout']
46-
client_args = {}
47-
action_args = {}
48-
params = locals()
49-
for key, val in iteritems(params["kwargs"]):
50-
if key in client_params:
51-
client_args[key] = val
52-
elif key in action_params:
53-
action_args[key] = val
5440

55-
k8s_client = client.api_client.ApiClient(**client_args)
5641
with open(path.abspath(yaml_file)) as f:
5742
yml_object = yaml.load(f)
43+
#TODO: case of yaml file containing multiple objects
5844
api_type, _, api_version = yml_object["apiVersion"].partition("/")
5945
if api_version == "":
6046
api_version = api_type
@@ -78,10 +64,10 @@ def create_from_yaml(yaml_file, verbose=False, **kwargs):
7864
# Expect the user to create namespaced objects more often
7965
if hasattr(k8s_api, "create_namespaced_{0}".format(action_type_camel)):
8066
resp = getattr(k8s_api, "create_namespaced_{0}".format(action_type_camel))(
81-
body=yml_object, namespace=dep_namespace, **action_args)
67+
body=yml_object, namespace=dep_namespace, **kwargs)
8268
else:
8369
resp = getattr(k8s_api, "create_{0}".format(action_type_camel))(
84-
body=yml_object, **action_args)
70+
body=yml_object, **kwargs)
8571
if verbose:
8672
print("{0} created. status='{1}'".format(action_type, str(resp.status)))
8773
return k8s_api

0 commit comments

Comments
 (0)