Skip to content

Commit aac3690

Browse files
authored
Merge pull request #53 from MujibAzizi/hotfix/add-labels-to-k8s-resources
Add support for labels to more K8sResource types
2 parents 04c5555 + 48b2e3d commit aac3690

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+175
-2
lines changed

docs/kinds/ConfigMap.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
```php
88
$cm = $cluster->configmap()
99
->setName('certificates')
10+
->setLabels(['tier' => 'backend'])
1011
->setData([
1112
'key.pem' => '...',
1213
'ca.pem' => '...',

docs/kinds/Ingress.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
```php
88
$ingress = $cluster->ingress()
99
->setName('nginx')
10+
->setLabels(['tier' => 'backend'])
1011
->setSelectors(['app' => 'frontend'])
1112
->setRules([[
1213
'host' => 'nginx.test.com',

docs/kinds/Resource.md

+18
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,24 @@ $namespace->getName();
5858

5959
Alias for [setName($name)](#setnamename). It's just a naming convention for better filters on get.
6060

61+
## Labels
62+
63+
### `setLabels(array $labels)`
64+
65+
Set the labels of the resource.
66+
67+
```php
68+
$service->setLabels(['tier' => 'backend']);
69+
```
70+
71+
### `getLabels()`
72+
73+
Get the labels of a resource.
74+
75+
```php
76+
$service->getLabels();
77+
```
78+
6179
## API
6280

6381
### `getApiVersion()`

docs/kinds/Service.md

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
```php
88
$svc = $cluster->service()
99
->setName('nginx')
10+
->setLabels(['tier' => 'backend'])
1011
->setSelectors(['app' => 'frontend'])
1112
->setPorts([
1213
['protocol' => 'TCP', 'port' => 80, 'targetPort' => 80],

src/Kinds/K8sClusterRoleBinding.php

+4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
namespace RenokiCo\PhpK8s\Kinds;
44

5+
use RenokiCo\PhpK8s\Traits\HasLabels;
6+
57
class K8sClusterRoleBinding extends K8sRoleBinding
68
{
9+
use HasLabels;
10+
711
/**
812
* The resource Kind parameter.
913
*

src/Kinds/K8sConfigMap.php

+3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44

55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
7+
use RenokiCo\PhpK8s\Traits\HasLabels;
78

89
class K8sConfigMap extends K8sResource implements InteractsWithK8sCluster, Watchable
910
{
11+
use HasLabels;
12+
1013
/**
1114
* The resource Kind parameter.
1215
*

src/Kinds/K8sHorizontalPodAutoscaler.php

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use RenokiCo\PhpK8s\Contracts\Scalable;
77
use RenokiCo\PhpK8s\Contracts\Watchable;
88
use RenokiCo\PhpK8s\Instances\ResourceMetric;
9+
use RenokiCo\PhpK8s\Traits\HasLabels;
910
use RenokiCo\PhpK8s\Traits\HasSpec;
1011
use RenokiCo\PhpK8s\Traits\HasStatus;
1112
use RenokiCo\PhpK8s\Traits\HasStatusConditions;
@@ -15,6 +16,7 @@ class K8sHorizontalPodAutoscaler extends K8sResource implements InteractsWithK8s
1516
use HasSpec;
1617
use HasStatus;
1718
use HasStatusConditions;
19+
use HasLabels;
1820

1921
/**
2022
* The resource Kind parameter.

src/Kinds/K8sIngress.php

+2
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@
55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
77
use RenokiCo\PhpK8s\Traits\HasAnnotations;
8+
use RenokiCo\PhpK8s\Traits\HasLabels;
89
use RenokiCo\PhpK8s\Traits\HasSpec;
910

1011
class K8sIngress extends K8sResource implements InteractsWithK8sCluster, Watchable
1112
{
1213
use HasAnnotations;
1314
use HasSpec;
15+
use HasLabels;
1416

1517
/**
1618
* The resource Kind parameter.

src/Kinds/K8sNamespace.php

+2
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44

55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
7+
use RenokiCo\PhpK8s\Traits\HasLabels;
78
use RenokiCo\PhpK8s\Traits\HasStatus;
89
use RenokiCo\PhpK8s\Traits\HasStatusPhase;
910

1011
class K8sNamespace extends K8sResource implements InteractsWithK8sCluster, Watchable
1112
{
1213
use HasStatus;
1314
use HasStatusPhase;
15+
use HasLabels;
1416

1517
/**
1618
* The resource Kind parameter.

src/Kinds/K8sPersistentVolume.php

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
77
use RenokiCo\PhpK8s\Traits\HasAccessModes;
8+
use RenokiCo\PhpK8s\Traits\HasLabels;
89
use RenokiCo\PhpK8s\Traits\HasMountOptions;
910
use RenokiCo\PhpK8s\Traits\HasSelector;
1011
use RenokiCo\PhpK8s\Traits\HasSpec;
@@ -21,6 +22,7 @@ class K8sPersistentVolume extends K8sResource implements InteractsWithK8sCluster
2122
use HasStatus;
2223
use HasStatusPhase;
2324
use HasStorageClass;
25+
use HasLabels;
2426

2527
/**
2628
* The resource Kind parameter.

src/Kinds/K8sPersistentVolumeClaim.php

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
77
use RenokiCo\PhpK8s\Traits\HasAccessModes;
8+
use RenokiCo\PhpK8s\Traits\HasLabels;
89
use RenokiCo\PhpK8s\Traits\HasSelector;
910
use RenokiCo\PhpK8s\Traits\HasSpec;
1011
use RenokiCo\PhpK8s\Traits\HasStatus;
@@ -19,6 +20,7 @@ class K8sPersistentVolumeClaim extends K8sResource implements InteractsWithK8sCl
1920
use HasStatus;
2021
use HasStatusPhase;
2122
use HasStorageClass;
23+
use HasLabels;
2224

2325
/**
2426
* The resource Kind parameter.

src/Kinds/K8sRole.php

+2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44

55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
7+
use RenokiCo\PhpK8s\Traits\HasLabels;
78
use RenokiCo\PhpK8s\Traits\HasRules;
89

910
class K8sRole extends K8sResource implements InteractsWithK8sCluster, Watchable
1011
{
1112
use HasRules;
13+
use HasLabels;
1214

1315
/**
1416
* The resource Kind parameter.

src/Kinds/K8sRoleBinding.php

+2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44

55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
7+
use RenokiCo\PhpK8s\Traits\HasLabels;
78
use RenokiCo\PhpK8s\Traits\HasSubjects;
89

910
class K8sRoleBinding extends K8sResource implements InteractsWithK8sCluster, Watchable
1011
{
1112
use HasSubjects;
13+
use HasLabels;
1214

1315
/**
1416
* The resource Kind parameter.

src/Kinds/K8sSecret.php

+3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44

55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
7+
use RenokiCo\PhpK8s\Traits\HasLabels;
78

89
class K8sSecret extends K8sResource implements InteractsWithK8sCluster, Watchable
910
{
11+
use HasLabels;
12+
1013
/**
1114
* The resource Kind parameter.
1215
*

src/Kinds/K8sService.php

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
77
use RenokiCo\PhpK8s\Traits\HasAnnotations;
8+
use RenokiCo\PhpK8s\Traits\HasLabels;
89
use RenokiCo\PhpK8s\Traits\HasSelector;
910
use RenokiCo\PhpK8s\Traits\HasSpec;
1011

@@ -13,6 +14,7 @@ class K8sService extends K8sResource implements InteractsWithK8sCluster, Watchab
1314
use HasAnnotations;
1415
use HasSelector;
1516
use HasSpec;
17+
use HasLabels;
1618

1719
/**
1820
* The resource Kind parameter.

src/Kinds/K8sServiceAccount.php

+3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44

55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
7+
use RenokiCo\PhpK8s\Traits\HasLabels;
78

89
class K8sServiceAccount extends K8sResource implements InteractsWithK8sCluster, Watchable
910
{
11+
use HasLabels;
12+
1013
/**
1114
* The resource Kind parameter.
1215
*

src/Kinds/K8sStorageClass.php

+3
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44

55
use RenokiCo\PhpK8s\Contracts\InteractsWithK8sCluster;
66
use RenokiCo\PhpK8s\Contracts\Watchable;
7+
use RenokiCo\PhpK8s\Traits\HasLabels;
78

89
class K8sStorageClass extends K8sResource implements InteractsWithK8sCluster, Watchable
910
{
11+
use HasLabels;
12+
1013
/**
1114
* The resource Kind parameter.
1215
*

tests/ClusterRoleBindingTest.php

+7
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,14 @@ public function test_cluster_role_binding_build()
3030

3131
$crb = $this->cluster->clusterRoleBinding()
3232
->setName('user-binding')
33+
->setLabels(['tier' => 'backend'])
3334
->setRole($cr)
3435
->addSubjects([$subject])
3536
->setSubjects([$subject]);
3637

3738
$this->assertEquals('rbac.authorization.k8s.io/v1', $crb->getApiVersion());
3839
$this->assertEquals('user-binding', $crb->getName());
40+
$this->assertEquals(['tier' => 'backend'], $crb->getLabels());
3941
$this->assertEquals([$subject], $crb->getSubjects());
4042
$this->assertEquals(['apiGroup' => 'rbac.authorization.k8s.io', 'kind' => 'ClusterRole', 'name' => 'admin-cr'], $crb->getRole());
4143
}
@@ -62,6 +64,7 @@ public function test_cluster_role_binding_from_yaml()
6264

6365
$this->assertEquals('rbac.authorization.k8s.io/v1', $crb->getApiVersion());
6466
$this->assertEquals('user-binding', $crb->getName());
67+
$this->assertEquals(['tier' => 'backend'], $crb->getLabels());
6568
$this->assertEquals([$subject], $crb->getSubjects());
6669
$this->assertEquals(['apiGroup' => 'rbac.authorization.k8s.io', 'kind' => 'ClusterRole', 'name' => 'admin-cr'], $crb->getRole());
6770
}
@@ -97,6 +100,7 @@ public function runCreationTests()
97100

98101
$crb = $this->cluster->clusterRoleBinding()
99102
->setName('user-binding')
103+
->setLabels(['tier' => 'backend'])
100104
->setRole($cr)
101105
->addSubjects([$subject])
102106
->setSubjects([$subject]);
@@ -114,6 +118,7 @@ public function runCreationTests()
114118

115119
$this->assertEquals('rbac.authorization.k8s.io/v1', $crb->getApiVersion());
116120
$this->assertEquals('user-binding', $crb->getName());
121+
$this->assertEquals(['tier' => 'backend'], $crb->getLabels());
117122
$this->assertEquals([$subject], $crb->getSubjects());
118123
$this->assertEquals(['apiGroup' => 'rbac.authorization.k8s.io', 'kind' => 'ClusterRole', 'name' => 'admin-cr'], $crb->getRole());
119124
}
@@ -147,6 +152,7 @@ public function runGetTests()
147152

148153
$this->assertEquals('rbac.authorization.k8s.io/v1', $crb->getApiVersion());
149154
$this->assertEquals('user-binding', $crb->getName());
155+
$this->assertEquals(['tier' => 'backend'], $crb->getLabels());
150156
$this->assertEquals([$subject], $crb->getSubjects());
151157
$this->assertEquals(['apiGroup' => 'rbac.authorization.k8s.io', 'kind' => 'ClusterRole', 'name' => 'admin-cr'], $crb->getRole());
152158
}
@@ -171,6 +177,7 @@ public function runUpdateTests()
171177

172178
$this->assertEquals('rbac.authorization.k8s.io/v1', $crb->getApiVersion());
173179
$this->assertEquals('user-binding', $crb->getName());
180+
$this->assertEquals(['tier' => 'backend'], $crb->getLabels());
174181
$this->assertEquals([$subject], $crb->getSubjects());
175182
$this->assertEquals(['apiGroup' => 'rbac.authorization.k8s.io', 'kind' => 'ClusterRole', 'name' => 'admin-cr'], $crb->getRole());
176183
}

tests/ConfigMapTest.php

+7
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ public function test_config_map_build()
1212
{
1313
$cm = $this->cluster->configmap()
1414
->setName('settings')
15+
->setLabels(['tier' => 'backend'])
1516
->setData(['somekey' => 'somevalue'])
1617
->addData('key2', 'val2')
1718
->removeData('somekey');
1819

1920
$this->assertEquals('v1', $cm->getApiVersion());
2021
$this->assertEquals('settings', $cm->getName());
22+
$this->assertEquals(['tier' => 'backend'], $cm->getLabels());
2123
$this->assertEquals(['key2' => 'val2'], $cm->getData());
2224
}
2325

@@ -27,6 +29,7 @@ public function test_config_map_from_yaml()
2729

2830
$this->assertEquals('v1', $cm->getApiVersion());
2931
$this->assertEquals('settings', $cm->getName());
32+
$this->assertEquals(['tier' => 'backend'], $cm->getLabels());
3033
$this->assertEquals(['key2' => 'val2'], $cm->getData());
3134
}
3235

@@ -45,6 +48,7 @@ public function runCreationTests()
4548
{
4649
$cm = $this->cluster->configmap()
4750
->setName('settings')
51+
->setLabels(['tier' => 'backend'])
4852
->setData(['somekey' => 'somevalue'])
4953
->addData('key2', 'val2')
5054
->removeData('somekey');
@@ -61,6 +65,7 @@ public function runCreationTests()
6165

6266
$this->assertEquals('v1', $cm->getApiVersion());
6367
$this->assertEquals('settings', $cm->getName());
68+
$this->assertEquals(['tier' => 'backend'], $cm->getLabels());
6469
$this->assertEquals(['key2' => 'val2'], $cm->getData());
6570
$this->assertEquals('val2', $cm->getData('key2'));
6671
}
@@ -88,6 +93,7 @@ public function runGetTests()
8893

8994
$this->assertEquals('v1', $cm->getApiVersion());
9095
$this->assertEquals('settings', $cm->getName());
96+
$this->assertEquals(['tier' => 'backend'], $cm->getLabels());
9197
$this->assertEquals(['key2' => 'val2'], $cm->getData());
9298
$this->assertEquals('val2', $cm->getData('key2'));
9399
}
@@ -107,6 +113,7 @@ public function runUpdateTests()
107113

108114
$this->assertEquals('v1', $cm->getApiVersion());
109115
$this->assertEquals('settings', $cm->getName());
116+
$this->assertEquals(['tier' => 'backend'], $cm->getLabels());
110117
$this->assertEquals(['newkey' => 'newval'], $cm->getData());
111118
$this->assertEquals('newval', $cm->getData('newkey'));
112119
}

0 commit comments

Comments
 (0)