|
| 1 | +# Licensed under the Apache License, Version 2.0 (the "License"); you may |
| 2 | +# not use this file except in compliance with the License. You may obtain |
| 3 | +# a copy of the License at |
| 4 | +# |
| 5 | +# http://www.apache.org/licenses/LICENSE-2.0 |
| 6 | +# |
| 7 | +# Unless required by applicable law or agreed to in writing, software |
| 8 | +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| 9 | +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| 10 | +# License for the specific language governing permissions and limitations |
| 11 | +# under the License. |
| 12 | + |
| 13 | +import testtools |
| 14 | + |
| 15 | +from openstack.bare_metal.v1 import node |
| 16 | + |
| 17 | +# NOTE: Sample data from api-ref doc |
| 18 | +FAKE = { |
| 19 | + "chassis_uuid": "1", # NOTE: missed in api-ref sample |
| 20 | + "clean_step": {}, |
| 21 | + "console_enabled": False, |
| 22 | + "created_at": "2016-08-18T22:28:48.643434+00:00", |
| 23 | + "driver": "agent_ipmitool", |
| 24 | + "driver_info": { |
| 25 | + "ipmi_password": "******", |
| 26 | + "ipmi_username": "ADMIN" |
| 27 | + }, |
| 28 | + "driver_internal_info": {}, |
| 29 | + "extra": {}, |
| 30 | + "inspection_finished_at": None, |
| 31 | + "inspection_started_at": None, |
| 32 | + "instance_info": {}, |
| 33 | + "instance_uuid": None, |
| 34 | + "last_error": None, |
| 35 | + "links": [ |
| 36 | + { |
| 37 | + "href": "http://127.0.0.1:6385/v1/nodes/<NODE_ID>", |
| 38 | + "rel": "self" |
| 39 | + }, |
| 40 | + { |
| 41 | + "href": "http://127.0.0.1:6385/nodes/<NODE_ID>", |
| 42 | + "rel": "bookmark" |
| 43 | + } |
| 44 | + ], |
| 45 | + "maintenance": False, |
| 46 | + "maintenance_reason": None, |
| 47 | + "name": "test_node", |
| 48 | + "network_interface": "flat", |
| 49 | + "portgroups": [ |
| 50 | + { |
| 51 | + "href": "http://127.0.0.1:6385/v1/nodes/<NODE_ID>/portgroups", |
| 52 | + "rel": "self" |
| 53 | + }, |
| 54 | + { |
| 55 | + "href": "http://127.0.0.1:6385/nodes/<NODE_ID>/portgroups", |
| 56 | + "rel": "bookmark" |
| 57 | + } |
| 58 | + ], |
| 59 | + "ports": [ |
| 60 | + { |
| 61 | + "href": "http://127.0.0.1:6385/v1/nodes/<NODE_ID>/ports", |
| 62 | + "rel": "self" |
| 63 | + }, |
| 64 | + { |
| 65 | + "href": "http://127.0.0.1:6385/nodes/<NODE_ID>/ports", |
| 66 | + "rel": "bookmark" |
| 67 | + } |
| 68 | + ], |
| 69 | + "power_state": None, |
| 70 | + "properties": {}, |
| 71 | + "provision_state": "enroll", |
| 72 | + "provision_updated_at": None, |
| 73 | + "raid_config": {}, |
| 74 | + "reservation": None, |
| 75 | + "resource_class": None, |
| 76 | + "states": [ |
| 77 | + { |
| 78 | + "href": "http://127.0.0.1:6385/v1/nodes/<NODE_ID>/states", |
| 79 | + "rel": "self" |
| 80 | + }, |
| 81 | + { |
| 82 | + "href": "http://127.0.0.1:6385/nodes/<NODE_ID>/states", |
| 83 | + "rel": "bookmark" |
| 84 | + } |
| 85 | + ], |
| 86 | + "target_power_state": None, |
| 87 | + "target_provision_state": None, |
| 88 | + "target_raid_config": {}, |
| 89 | + "updated_at": None, |
| 90 | + "uuid": "6d85703a-565d-469a-96ce-30b6de53079d" |
| 91 | +} |
| 92 | + |
| 93 | + |
| 94 | +class TestNode(testtools.TestCase): |
| 95 | + |
| 96 | + def test_basic(self): |
| 97 | + sot = node.Node() |
| 98 | + self.assertIsNone(sot.resource_key) |
| 99 | + self.assertEqual('nodes', sot.resources_key) |
| 100 | + self.assertEqual('/nodes', sot.base_path) |
| 101 | + self.assertEqual('baremetal', sot.service.service_type) |
| 102 | + self.assertTrue(sot.allow_create) |
| 103 | + self.assertTrue(sot.allow_get) |
| 104 | + self.assertTrue(sot.allow_update) |
| 105 | + self.assertTrue(sot.allow_delete) |
| 106 | + self.assertTrue(sot.allow_list) |
| 107 | + self.assertTrue(sot.patch_update) |
| 108 | + |
| 109 | + def test_instantiate(self): |
| 110 | + sot = node.Node(**FAKE) |
| 111 | + |
| 112 | + self.assertEqual(FAKE['uuid'], sot.id) |
| 113 | + self.assertEqual(FAKE['name'], sot.name) |
| 114 | + |
| 115 | + self.assertEqual(FAKE['chassis_uuid'], sot.chassis_id) |
| 116 | + self.assertEqual(FAKE['clean_step'], sot.clean_step) |
| 117 | + self.assertEqual(FAKE['created_at'], sot.created_at) |
| 118 | + self.assertEqual(FAKE['driver'], sot.driver) |
| 119 | + self.assertEqual(FAKE['driver_info'], sot.driver_info) |
| 120 | + self.assertEqual(FAKE['driver_internal_info'], |
| 121 | + sot.driver_internal_info) |
| 122 | + self.assertEqual(FAKE['extra'], sot.extra) |
| 123 | + self.assertEqual(FAKE['instance_info'], sot.instance_info) |
| 124 | + self.assertEqual(FAKE['instance_uuid'], sot.instance_id) |
| 125 | + self.assertEqual(FAKE['console_enabled'], sot.is_console_enabled) |
| 126 | + self.assertEqual(FAKE['maintenance'], sot.is_maintenance) |
| 127 | + self.assertEqual(FAKE['last_error'], sot.last_error) |
| 128 | + self.assertEqual(FAKE['links'], sot.links) |
| 129 | + self.assertEqual(FAKE['maintenance_reason'], sot.maintenance_reason) |
| 130 | + self.assertEqual(FAKE['name'], sot.name) |
| 131 | + self.assertEqual(FAKE['network_interface'], sot.network_interface) |
| 132 | + self.assertEqual(FAKE['ports'], sot.ports) |
| 133 | + self.assertEqual(FAKE['portgroups'], sot.port_groups) |
| 134 | + self.assertEqual(FAKE['power_state'], sot.power_state) |
| 135 | + self.assertEqual(FAKE['properties'], sot.properties) |
| 136 | + self.assertEqual(FAKE['provision_state'], sot.provision_state) |
| 137 | + self.assertEqual(FAKE['raid_config'], sot.raid_config) |
| 138 | + self.assertEqual(FAKE['reservation'], sot.reservation) |
| 139 | + self.assertEqual(FAKE['resource_class'], sot.resource_class) |
| 140 | + self.assertEqual(FAKE['states'], sot.states) |
| 141 | + self.assertEqual(FAKE['target_provision_state'], |
| 142 | + sot.target_provision_state) |
| 143 | + self.assertEqual(FAKE['target_power_state'], sot.target_power_state) |
| 144 | + self.assertEqual(FAKE['target_raid_config'], sot.target_raid_config) |
| 145 | + self.assertEqual(FAKE['updated_at'], sot.updated_at) |
| 146 | + |
| 147 | + |
| 148 | +class TestNodeDetail(testtools.TestCase): |
| 149 | + |
| 150 | + def test_basic(self): |
| 151 | + sot = node.NodeDetail() |
| 152 | + self.assertIsNone(sot.resource_key) |
| 153 | + self.assertEqual('nodes', sot.resources_key) |
| 154 | + self.assertEqual('/nodes/detail', sot.base_path) |
| 155 | + self.assertEqual('baremetal', sot.service.service_type) |
| 156 | + self.assertFalse(sot.allow_create) |
| 157 | + self.assertFalse(sot.allow_get) |
| 158 | + self.assertFalse(sot.allow_update) |
| 159 | + self.assertFalse(sot.allow_delete) |
| 160 | + self.assertTrue(sot.allow_list) |
| 161 | + |
| 162 | + def test_instantiate(self): |
| 163 | + sot = node.NodeDetail(**FAKE) |
| 164 | + |
| 165 | + self.assertEqual(FAKE['uuid'], sot.id) |
| 166 | + self.assertEqual(FAKE['name'], sot.name) |
| 167 | + |
| 168 | + self.assertEqual(FAKE['chassis_uuid'], sot.chassis_id) |
| 169 | + self.assertEqual(FAKE['clean_step'], sot.clean_step) |
| 170 | + self.assertEqual(FAKE['created_at'], sot.created_at) |
| 171 | + self.assertEqual(FAKE['driver'], sot.driver) |
| 172 | + self.assertEqual(FAKE['driver_info'], sot.driver_info) |
| 173 | + self.assertEqual(FAKE['driver_internal_info'], |
| 174 | + sot.driver_internal_info) |
| 175 | + self.assertEqual(FAKE['extra'], sot.extra) |
| 176 | + self.assertEqual(FAKE['instance_info'], sot.instance_info) |
| 177 | + self.assertEqual(FAKE['instance_uuid'], sot.instance_id) |
| 178 | + self.assertEqual(FAKE['console_enabled'], sot.is_console_enabled) |
| 179 | + self.assertEqual(FAKE['maintenance'], sot.is_maintenance) |
| 180 | + self.assertEqual(FAKE['last_error'], sot.last_error) |
| 181 | + self.assertEqual(FAKE['links'], sot.links) |
| 182 | + self.assertEqual(FAKE['maintenance_reason'], sot.maintenance_reason) |
| 183 | + self.assertEqual(FAKE['name'], sot.name) |
| 184 | + self.assertEqual(FAKE['network_interface'], sot.network_interface) |
| 185 | + self.assertEqual(FAKE['ports'], sot.ports) |
| 186 | + self.assertEqual(FAKE['portgroups'], sot.port_groups) |
| 187 | + self.assertEqual(FAKE['power_state'], sot.power_state) |
| 188 | + self.assertEqual(FAKE['properties'], sot.properties) |
| 189 | + self.assertEqual(FAKE['provision_state'], sot.provision_state) |
| 190 | + self.assertEqual(FAKE['raid_config'], sot.raid_config) |
| 191 | + self.assertEqual(FAKE['reservation'], sot.reservation) |
| 192 | + self.assertEqual(FAKE['resource_class'], sot.resource_class) |
| 193 | + self.assertEqual(FAKE['states'], sot.states) |
| 194 | + self.assertEqual(FAKE['target_provision_state'], |
| 195 | + sot.target_provision_state) |
| 196 | + self.assertEqual(FAKE['target_power_state'], sot.target_power_state) |
| 197 | + self.assertEqual(FAKE['target_raid_config'], sot.target_raid_config) |
| 198 | + self.assertEqual(FAKE['updated_at'], sot.updated_at) |
0 commit comments