예제 #1
0
    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)
예제 #2
0
 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')
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
 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)