Skip to content

Commit

Permalink
Merge pull request #105 from lphuberdeau/filter-labels-without-name
Browse files Browse the repository at this point in the history
Filter labels without name
  • Loading branch information
sebastienc committed Dec 18, 2017
2 parents 05ff992 + 72092e8 commit 74689bb
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 19 deletions.
25 changes: 6 additions & 19 deletions kubernetes/K8sPod.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,27 +418,14 @@ def pod_ip(self, ip=None):

# ------------------------------------------------------------------------------------- filtering

@staticmethod
def get_by_name(config=None, name=None):
if config is None:
config = K8sConfig()
@classmethod
def get_by_name(cls, config=None, name=None):
if not is_valid_string(name):
raise SyntaxError(
'K8sPod.get_by_name(): name: [ {0} ] is invalid.'.format(name))

pod_list = []
data = {'labelSelector': 'name={0}'.format(name)}
pods = K8sPod(config=config, name=name).get_with_params(data=data)

for pod in pods:
try:
p = Pod(pod)
k8s_pod = K8sPod(config=config, name=p.metadata.name).get()
pod_list.append(k8s_pod)
except NotFoundException:
pass

return pod_list
return cls.get_by_labels(config=config, labels={
"name": name,
})

@staticmethod
def get_by_labels(config=None, labels=None):
Expand All @@ -451,7 +438,7 @@ def get_by_labels(config=None, labels=None):
pod_list = []
selector = ",".join(['%s=%s' % (key, value) for (key, value) in labels.items()])
data = {'labelSelector': selector}
p = K8sPod(config=config, name=labels['name'])
p = K8sPod(config=config, name="")
pods = p.get_with_params(data=data)

for pod in pods:
Expand Down
18 changes: 18 additions & 0 deletions tests/test_k8s_pod.py
Original file line number Diff line number Diff line change
Expand Up @@ -910,6 +910,24 @@ def test_get_by_labels(self):
self.assertEqual(1, len(pods))
self.assertEqual(pod, pods[0])

def test_get_by_labels_without_name(self):
name = "yocontainer"
container = _utils.create_container(name=name)
name = "yopod-{0}".format(str(uuid.uuid4()))
pod = _utils.create_pod(name=name)
pod.add_container(container)
pod.add_label("test.label", "hello")

if _utils.is_reachable(pod.config):
pod.create()
pods = K8sPod.get_by_labels(config=pod.config, labels={'test.label': "hello"})
self.assertIsInstance(pods, list)
self.assertEqual(1, len(pods))
self.assertEqual(pod, pods[0])

pods = K8sPod.get_by_labels(config=pod.config, labels={'test.label': "world"})
self.assertEqual(0, len(pods))

# ------------------------------------------------------------------------------------- api - create

def test_create_without_containers(self):
Expand Down

0 comments on commit 74689bb

Please sign in to comment.