def test_create_security_group(self):
        """
        Tests create security group.
        """
        management_security_group_name = 'temp_unittest-mngt-sg'
        agent_security_group_name = 'temp_unittest-agent-sg'
        provider_config = _read_config(None)

        #change security-group name so test will not affect production
        provider_config['networking']['management_security_group'][
            'name'] = management_security_group_name
        provider_config['networking']['agents_security_group'][
            'name'] = agent_security_group_name

        self.cloud_driver = CloudstackConnector(provider_config).create()

        try:
            sg_creator = CloudstackSecurityGroupCreator(
                self.cloud_driver, provider_config)
            sg_creator.create_security_groups()

            if sg_creator.get_security_group(
                    management_security_group_name) is None:
                raise AssertionError(
                    'expecting to find security group {0}'.format(
                        management_security_group_name))
            if sg_creator.get_security_group(
                    agent_security_group_name) is None:
                raise AssertionError(
                    'expecting to find security group {0}'.format(
                        agent_security_group_name))

            sg_creator.delete_security_groups()

            if sg_creator.get_security_group(management_security_group_name):
                raise AssertionError(
                    'expecting security group {0} to be deleted'.format(
                        management_security_group_name))
            if sg_creator.get_security_group(agent_security_group_name):
                raise AssertionError(
                    'expecting security group {0} to be deleted'.format(
                        agent_security_group_name))
        finally:
            try:
                self.cloud_driver.ex_delete_security_group(
                    management_security_group_name)
            except:
                pass

            try:
                self.cloud_driver.ex_delete_security_group(
                    agent_security_group_name)
            except:
                pass
    def test_create_security_group(self):
        """
        Tests create security group.
        """
        management_security_group_name = 'temp_unittest-mngt-sg'
        agent_security_group_name = 'temp_unittest-agent-sg'
        provider_config = _read_config(None)

        #change security-group name so test will not affect production
        provider_config['networking']['management_security_group'][
            'name'] = management_security_group_name
        provider_config['networking']['agents_security_group'][
            'name'] = agent_security_group_name

        self.cloud_driver = CloudstackConnector(provider_config).create()

        try:
            sg_creator = CloudstackSecurityGroupCreator(self.cloud_driver,
                                                      provider_config)
            sg_creator.create_security_groups()

            if sg_creator.get_security_group(
                    management_security_group_name) is None:
                raise AssertionError(
                    'expecting to find security group {0}'.format(
                        management_security_group_name))
            if sg_creator.get_security_group(agent_security_group_name) is None:
                raise AssertionError(
                    'expecting to find security group {0}'.format(
                        agent_security_group_name))

            sg_creator.delete_security_groups()

            if sg_creator.get_security_group(
                    management_security_group_name):
                raise AssertionError(
                    'expecting security group {0} to be deleted'.format(
                    management_security_group_name))
            if sg_creator.get_security_group(agent_security_group_name):
                raise AssertionError(
                    'expecting security group {0} to be deleted'.format(
                    agent_security_group_name))
        finally:
            try:
                self.cloud_driver.ex_delete_security_group(
                    management_security_group_name)
            except:
                pass

            try:
                self.cloud_driver.ex_delete_security_group(
                    agent_security_group_name)
            except:
                pass
    def test_use_existing_security_group_not_found(self):
        """
        Tests create security group with 'use_existing' property set to true
        """
        provider_config = _read_config(None)

        #security-group use_existing=True
        provider_config['networking']['management_security_group'][
            'use_existing'] = True
        provider_config['networking']['management_security_group'][
            'name'] = 'non-existing-sg'

        cloud_driver = CloudstackConnector(provider_config).create()
        sg_creator = CloudstackSecurityGroupCreator(cloud_driver, provider_config)
        try:
            sg_creator.create_security_groups()
            raise AssertionError(
                'Security-group validation failed. Non existing group did not '
                'raise an error as expected')
        except CloudstackLogicError:
            pass
    def test_security_group_does_not_exist(self):
        """
        Tests create security group with use_existing=True expecting an error
        """
        existing_sg_name = 'temp-unittest-security-group'
        provider_config = _read_config(None)

        provider_config['networking']['management_security_group'][
            'use_existing'] = True
        provider_config['networking']['management_security_group'][
            'name'] = existing_sg_name

        cloud_driver = CloudstackConnector(provider_config).create()
        sg_creator = CloudstackSecurityGroupCreator(cloud_driver,
                                                    provider_config)
        try:
            sg_creator.create_security_groups()
            raise AssertionError('Security-group validation failed. '
                                 'use_existing flag did not '
                                 'raise an error as expected')
        except CloudstackLogicError:
            pass
    def test_use_existing_security_group_not_found(self):
        """
        Tests create security group with 'use_existing' property set to true
        """
        provider_config = _read_config(None)

        #security-group use_existing=True
        provider_config['networking']['management_security_group'][
            'use_existing'] = True
        provider_config['networking']['management_security_group'][
            'name'] = 'non-existing-sg'

        cloud_driver = CloudstackConnector(provider_config).create()
        sg_creator = CloudstackSecurityGroupCreator(cloud_driver,
                                                    provider_config)
        try:
            sg_creator.create_security_groups()
            raise AssertionError(
                'Security-group validation failed. Non existing group did not '
                'raise an error as expected')
        except CloudstackLogicError:
            pass
    def test_security_group_does_not_exist(self):
        """
        Tests create security group with use_existing=True expecting an error
        """
        existing_sg_name = 'temp-unittest-security-group'
        provider_config = _read_config(None)

        provider_config['networking']['management_security_group'][
            'use_existing'] = True
        provider_config['networking']['management_security_group'][
            'name'] = existing_sg_name

        cloud_driver = CloudstackConnector(provider_config).create()
        sg_creator = CloudstackSecurityGroupCreator(cloud_driver,
                                                  provider_config)
        try:
            sg_creator.create_security_groups()
            raise AssertionError(
                'Security-group validation failed. '
                'use_existing flag did not '
                'raise an error as expected')
        except CloudstackLogicError:
            pass