Beispiel #1
0
    def test_environment_ready_if_last_session_deployed_after_failed(self):
        """Test environment ready status

        If last session was deployed successfully and other session
        was failed - environment must have status "ready".

        Bug: #1413260
        """

        session = db_session.get_session()

        session.add(self.environment)

        now = timeutils.utcnow()

        session_1 = models.Session(environment=self.environment,
                                   user_id='test_user_id_1',
                                   version=OLD_VERSION,
                                   state=states.SessionState.DEPLOY_FAILURE,
                                   updated=now,
                                   description={})
        session_2 = models.Session(environment=self.environment,
                                   user_id='test_user_id_2',
                                   version=LATEST_VERSION,
                                   state=states.SessionState.DEPLOYED,
                                   updated=now + dt.timedelta(minutes=1),
                                   description={})
        session.add_all([session_1, session_2])
        session.flush()

        expected_status = states.EnvironmentStatus.READY
        actual_status = environments.EnvironmentServices.get_status(
            self.environment.id)

        self.assertEqual(expected_status, actual_status)
Beispiel #2
0
    def test_delete_failure_get_description(self):
        session = db_session.get_session()

        session.add(self.environment)

        now = timeutils.utcnow()

        session_1 = models.Session(environment=self.environment,
                                   user_id='test_user_id_1',
                                   version=OLD_VERSION,
                                   state=states.SessionState.DELETE_FAILURE,
                                   updated=now,
                                   description={})

        session.add(session_1)
        session.flush()

        expected_status = states.EnvironmentStatus.DELETE_FAILURE
        self.assertEqual(expected_status,
                         self.env_services.get_status(self.environment.id))

        env_id = self.environment.id
        description = (self.env_services.get_environment_description(
            env_id, session_id=None, inner=False))
        self.assertEqual({}, description)
Beispiel #3
0
 def _create_session_with_state(self, environment, user_id, state):
     unit = db_session.get_session()
     session = models.Session()
     session.environment_id = environment.id
     session.user_id = user_id
     session.state = state
     session.version = environment.version
     with unit.begin():
         unit.add(session)
Beispiel #4
0
    def test_get_status(self):
        session = db_session.get_session()

        session.add(self.environment)

        now = timeutils.utcnow()

        session_1 = models.Session(environment=self.environment,
                                   user_id='test_user_id_1',
                                   version=OLD_VERSION,
                                   state=states.SessionState.DEPLOY_FAILURE,
                                   updated=now,
                                   description={})

        session.add(session_1)
        session.flush()

        expected_status = states.EnvironmentStatus.DEPLOY_FAILURE
        self.assertEqual(expected_status,
                         self.env_services.get_status(self.environment.id))
Beispiel #5
0
    def test_report_env_stats(self, mock_notifier):
        now = timeutils.utcnow()
        later = now + dt.timedelta(minutes=1)

        session = db_session.get_session()

        environment1 = models.Environment(
            name='test_environment1', tenant_id='test_tenant_id1',
            version=2, id='test_env_id_1',
            created=now,
            updated=later,
            description={
                'Objects': {
                    'applications': ['app1'],
                    'services': ['service1']
                }
            }
        )
        environment2 = models.Environment(
            name='test_environment2', tenant_id='test_tenant_id2',
            version=1, id='test_env_id_2',
            created=now,
            updated=later,
            description={
                'Objects': {
                    'applications': ['app2'],
                    'services': ['service3']
                }
            }
        )
        environment3 = models.Environment(
            name='test_environment3', tenant_id='test_tenant_id2',
            version=1, id='test_env_id_3',
            created=now,
            updated=later,
            description={}
        )

        session_1 = models.Session(
            environment=environment1, user_id='test_user_id',
            description={},
            state=states.SessionState.DEPLOYED,
            version=1
        )

        session_2 = models.Session(
            environment=environment2, user_id='test_user_id',
            description={},
            state=states.SessionState.DEPLOYED,
            version=0
        )

        session_3 = models.Session(
            environment=environment3, user_id='test_user_id',
            description={},
            state=states.SessionState.DEPLOY_FAILURE,
            version=1
        )

        task_1 = models.Task(
            id='task_id_1',
            environment=environment1,
            description={},
            created=now,
            started=now,
            updated=later,
            finished=later
        )

        task_2 = models.Task(
            id='task_id_2',
            environment=environment2,
            description={},
            created=now,
            started=now,
            updated=later,
            finished=later
        )

        task_3 = models.Task(
            id='task_id_3',
            environment=environment3,
            description={},
            created=now,
            started=now,
            updated=later,
            finished=later
        )

        status_1 = models.Status(
            id='status_id_1',
            task_id='task_id_1',
            text='Deployed',
            level='info'
        )

        status_2 = models.Status(
            id='status_id_2',
            task_id='task_id_2',
            text='Deployed',
            level='info'
        )

        status_3 = models.Status(
            id='status_id_3',
            task_id='task_id_3',
            text='Something was wrong',
            level='error'
        )

        session.add_all([environment1, environment2, environment3])
        session.add_all([session_1, session_2, session_3])
        session.add_all([task_1, task_2, task_3])
        session.add_all([status_1, status_2, status_3])

        session.flush()

        self.service.report_env_stats()

        self.assertEqual(mock_notifier.call_count, 2)

        dict_env_1 = {'version': 2,
                      'updated': later,
                      'tenant_id': u'test_tenant_id1',
                      'created': now,
                      'description_text': u'',
                      'status': 'ready',
                      'id': u'test_env_id_1',
                      'name': u'test_environment1'}

        dict_env_2 = {'version': 1,
                      'updated': later,
                      'tenant_id': u'test_tenant_id2',
                      'created': now,
                      'description_text': u'',
                      'status': 'ready',
                      'id': u'test_env_id_2',
                      'name': u'test_environment2'}

        calls = [mock.call('environment.exists', dict_env_1),
                 mock.call('environment.exists', dict_env_2)]

        mock_notifier.assert_has_calls(calls)