Skip to content

Commit

Permalink
Merge pull request #10 from CodeaciousAU/pr-delete-options
Browse files Browse the repository at this point in the history
Support for specifying options when deleting a resource
  • Loading branch information
maclof authored Jul 8, 2017
2 parents 5a309ae + 6d4f08b commit 55c597b
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 12 deletions.
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,3 +150,16 @@ $replicationController = $client->replicationControllers()->setLabelSelector([
])->first();
$client->replicationControllers()->delete($replicationController);
```

You can also specify options when performing a deletion, eg. to perform [cascading delete]( https://kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/#setting-the-cascading-deletion-policy)

```php
use Maclof\Kubernetes\Models\DeleteOptions;

$client->replicationControllers()->delete($replicationController,
new DeleteOptions(['propagationPolicy' => 'Background']));
```

See the API documentation for an explanation of the options:

https://kubernetes.io/docs/api-reference/v1.6/#deleteoptions-v1-meta
10 changes: 5 additions & 5 deletions src/Client.php
Original file line number Diff line number Diff line change
Expand Up @@ -267,11 +267,11 @@ public function sendRequest($method, $uri, $query = [], $body = [], $namespace =

$requestUri = $baseUri . $uri;
$requestOptions = [];
if ($method != 'DELETE') {
$requestOptions = [
'query' => is_array($query) ? $query : [],
'body' => is_array($body) ? json_encode($body) : $body,
];
if (is_array($query) && !empty($query)) {
$requestOptions['query'] = $query;
}
if ($body !== null) {
$requestOptions['body'] = is_array($body) ? json_encode($body) : $body;
}

if (!$this->isUsingGuzzle6()) {
Expand Down
6 changes: 6 additions & 0 deletions src/Models/DeleteOptions.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?php namespace Maclof\Kubernetes\Models;

class DeleteOptions extends Model
{

}
18 changes: 11 additions & 7 deletions src/Repositories/Repository.php
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<?php namespace Maclof\Kubernetes\Repositories;

use Maclof\Kubernetes\Models\DeleteOptions;
use Maclof\Kubernetes\Models\Model;

abstract class Repository
Expand Down Expand Up @@ -84,26 +85,29 @@ public function update(Model $model)
/**
* Delete a model.
*
* @param \Maclof\Kubernetes\Models\Model $model
* @param \Maclof\Kubernetes\Models\Model $model
* @param \Maclof\Kubernetes\Models\DeleteOptions $options
* @return boolean
*/
public function delete(Model $model)
public function delete(Model $model, DeleteOptions $options=null)
{
return $this->deleteByName($model->getMetadata('name'));
return $this->deleteByName($model->getMetadata('name'), $options);
}

/**
* Delete a model by name.
*
* @param string $name
* @param string $name
* @param \Maclof\Kubernetes\Models\DeleteOptions $options
* @return boolean
*/
public function deleteByName($name)
public function deleteByName($name, DeleteOptions $options=null)
{
$body = $options ? $options->getSchema() : null;
if ($this->beta) {
$this->client->sendBetaRequest('DELETE', '/' . $this->uri . '/' . $name);
$this->client->sendBetaRequest('DELETE', '/' . $this->uri . '/' . $name, null, $body);
} else {
$this->client->sendRequest('DELETE', '/' . $this->uri . '/' . $name);
$this->client->sendRequest('DELETE', '/' . $this->uri . '/' . $name, null, $body);
}
return true;
}
Expand Down

0 comments on commit 55c597b

Please sign in to comment.