def test_status_transitions(self): """ Test that status transitions work as expected for different server workflows """ # Normal workflow server = OpenStackServerFactory() self.assertEqual(server.status, ServerStatus.Pending) self._assert_status_conditions(server) server._status_to_building() self.assertEqual(server.status, ServerStatus.Building) self._assert_status_conditions(server) server._status_to_unknown() self.assertEqual(server.status, ServerStatus.Unknown) self._assert_status_conditions(server) server._status_to_building() self.assertEqual(server.status, ServerStatus.Building) self._assert_status_conditions(server) server._status_to_booting() self.assertEqual(server.status, ServerStatus.Booting) self._assert_status_conditions(server, vm_available=True) server._status_to_unknown() self.assertEqual(server.status, ServerStatus.Unknown) self._assert_status_conditions(server) server._status_to_booting() self.assertEqual(server.status, ServerStatus.Booting) self._assert_status_conditions(server, vm_available=True) server._status_to_ready() self.assertEqual(server.status, ServerStatus.Ready) self._assert_status_conditions(server, is_steady_state=True, accepts_ssh_commands=True, vm_available=True) server._status_to_unknown() self.assertEqual(server.status, ServerStatus.Unknown) self._assert_status_conditions(server) server._status_to_ready() self.assertEqual(server.status, ServerStatus.Ready) self._assert_status_conditions(server, is_steady_state=True, accepts_ssh_commands=True, vm_available=True) server._status_to_terminated() self.assertEqual(server.status, ServerStatus.Terminated) self._assert_status_conditions(server, is_steady_state=True) # Server creation fails instance_bad_server = BuildingOpenStackServerFactory() instance_bad_server._status_to_build_failed() self.assertEqual(instance_bad_server.status, ServerStatus.BuildFailed) self._assert_status_conditions(server, is_steady_state=True)
def test_public_ip_active_server(self): """ Get the public IP of an active server """ server = BuildingOpenStackServerFactory( os_server_fixture='openstack/api_server_2_active.json') self.assertEqual(server.public_ip, '192.168.100.200')
def test_public_ip_building_server(self): """ A server in 'building' status doesn't have a public IP """ server = BuildingOpenStackServerFactory( os_server_fixture='openstack/api_server_1_building.json') self.assertEqual(server.public_ip, None)
def test_update_status_building(self): """ Update status while the server is building, without change on the OpenStack VM """ server = BuildingOpenStackServerFactory(os_server_fixture='openstack/api_server_1_building.json') self.assertEqual(server.status, ServerStatus.Building) self.assertIsInstance(server.update_status(), ServerStatus.Building) self.assertEqual(server.status, ServerStatus.Building)
def test_update_status_building_to_booting(self, mock_is_port_open): """ Update status while the server is building, when the VM becomes active """ mock_is_port_open.return_value = False server = BuildingOpenStackServerFactory(os_server_fixture='openstack/api_server_2_active.json') self.assertEqual(server.status, ServerStatus.Building) self.assertIsInstance(server.update_status(), ServerStatus.Booting) self.assertEqual(server.status, ServerStatus.Booting)