1: <?php
2: /**
3: * Copyright 2012-2014 Rackspace US, Inc.
4: *
5: * Licensed under the Apache License, Version 2.0 (the "License");
6: * you may not use this file except in compliance with the License.
7: * You may obtain a copy of the License at
8: *
9: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: namespace OpenCloud\Orchestration;
19:
20: use OpenCloud\Common\PersistentObject;
21:
22: /**
23: * @codeCoverageIgnore
24: */
25: class Resource extends PersistentObject
26: {
27: protected $links;
28: protected $logical_resource_id;
29: protected $physical_resource_id;
30: protected $resource_status;
31: protected $resource_status_reason;
32: protected $resource_type;
33: protected $updated_time;
34:
35: protected static $url_resource = 'resources';
36: protected static $json_name = 'resource';
37:
38: public function create($info = null)
39: {
40: $this->noCreate();
41: }
42:
43: public function id()
44: {
45: return $this->physical_resource_id;
46: }
47:
48: protected function primaryKeyField()
49: {
50: return 'physical_resource_id';
51: }
52:
53: public function name()
54: {
55: return $this->logical_resource_id;
56: }
57:
58: public function type()
59: {
60: return $this->resource_type;
61: }
62:
63: public function status()
64: {
65: return $this->resource_status;
66: }
67:
68: public function get()
69: {
70: $service = $this->getParent()->getService();
71:
72: switch ($this->resource_type) {
73: case 'AWS::EC2::Instance':
74: $objSvc = 'Compute';
75: $method = 'Server';
76: $name = 'nova';
77: break;
78: default:
79: throw new Exception(sprintf(
80: 'Unknown resource type: %s',
81: $this->resource_type
82: ));
83: }
84:
85: return $service->connection()->$objSvc($name, $service->region())->$method($this->id());
86: }
87: }
88: