/
Router.php
101 lines (81 loc) · 2.51 KB
/
Router.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
namespace OpenStack\Networking\v2\Extensions\Layer3\Models;
use OpenStack\Common\Resource\Alias;
use OpenStack\Common\Resource\Creatable;
use OpenStack\Common\Resource\Deletable;
use OpenStack\Common\Resource\HasWaiterTrait;
use OpenStack\Common\Resource\Listable;
use OpenStack\Common\Resource\OperatorResource;
use OpenStack\Common\Resource\Retrievable;
use OpenStack\Common\Resource\Updateable;
use OpenStack\Networking\v2\Extensions\Layer3\Api;
/**
* @property Api $api
*/
class Router extends OperatorResource implements Listable, Creatable, Retrievable, Updateable, Deletable
{
use HasWaiterTrait;
/** @var string */
public $status;
/** @var GatewayInfo */
public $externalGatewayInfo;
/** @var string */
public $name;
/** @var string */
public $adminStateUp;
/** @var string */
public $tenantId;
/** @var array */
public $routes;
/** @var string */
public $id;
protected $resourceKey = 'router';
protected $aliases = [
'admin_state_up' => 'adminStateUp',
'tenant_id' => 'tenantId',
];
protected function getAliases(): array
{
return parent::getAliases() + [
'external_gateway_info' => new Alias('externalGatewayInfo', GatewayInfo::class),
];
}
/**
* {@inheritdoc}
*/
public function create(array $userOptions): Creatable
{
$response = $this->execute($this->api->postRouters(), $userOptions);
return $this->populateFromResponse($response);
}
public function update()
{
$response = $this->executeWithState($this->api->putRouter());
$this->populateFromResponse($response);
}
public function retrieve()
{
$response = $this->executeWithState($this->api->getRouter());
$this->populateFromResponse($response);
}
public function delete()
{
$this->executeWithState($this->api->deleteRouter());
}
/**
* @param array $userOptions {@see \OpenStack\Networking\v2\Extensions\Layer3\Api::putAddInterface}
*/
public function addInterface(array $userOptions)
{
$userOptions['id'] = $this->id;
$this->execute($this->api->putAddInterface(), $userOptions);
}
/**
* @param array $userOptions {@see \OpenStack\Networking\v2\Extensions\Layer3\Api::putRemoveInterface}
*/
public function removeInterface(array $userOptions)
{
$userOptions['id'] = $this->id;
$this->execute($this->api->putRemoveInterface(), $userOptions);
}
}