def test_deploy_networkIPv6_configuration_given_gateway_equipment_not_found(self):
        self.mock_ip_get_by_blocks_and_net(Ipv6(block1 = 'fff', block2 = 'fff', block3 = 'fff', block4 = 'fff',
                                                block5 = 'fff', block6 = 'fff', block7 = 'fff', block8 = 'fff'))
        self.mock_find_equipamento_ipv6([])

        with self.assertRaises(IncorrectRedundantGatewayRegistryException):
            deploy_networkIPv6_configuration(self.user, self.networkv6, self.equipment_list)
    def test_deploy_networkIPv6_configuration_with_inactive_vlan(self):
        self.networkv6.vlan.ativada = False

        self.mock_ip_get_by_blocks_and_net(Ipv6(block1 = 'fff', block2 = 'fff', block3 = 'fff', block4 = 'fff',
                                                block5 = 'fff', block6 = 'fff', block7 = 'fff', block8 = 'fff'))
        self.mock_find_equipamento_ipv6([Ipv6Equipament()])
        self.mock_find_roteiro(EquipamentoRoteiro(roteiro = Roteiro(roteiro = 'roteiro')))
        self.mock_template_file_read('script content')
        deploy_config_mock = self.mock_deploy_config('config_deployed')
        network_activation_mock = self.mock_networkv6_activation()
        vlan_activation_mock = self.mock_vlan_activation()

        response = deploy_networkIPv6_configuration(self.user, self.networkv6, self.equipment_list)

        self.assertTrue(deploy_config_mock.called)
        network_activation_mock.assert_called_with(self.user)
        vlan_activation_mock.assert_called_with(self.user)
        self.assertEquals({1: 'config_deployed'}, response)
        log.info ("list = %s" % equipment_list)
        if len(equipment_list) != len(equipments_id_list):
            log.error("Error: equipments %s are not part of network environment." % equipments_id_list)
            raise exceptions.EquipmentIDNotInCorrectEnvException()
    else:
        #TODO GET network routers
        equipment_list = Equipamento.objects.filter(
            ipv6equipament__ip__networkipv6 = networkipv6,
            equipamentoambiente__ambiente = networkipv6.vlan.ambiente,
            equipamentoambiente__is_router = 1).distinct()
        if len(equipment_list) == 0:
            raise exceptions.NoEnvironmentRoutersFoundException()

    # Check permission to configure equipments 
    for equip in equipment_list:
        # User permission
        if not has_perm(request.user, AdminPermission.EQUIPMENT_MANAGEMENT, AdminPermission.WRITE_OPERATION, None, equip.id, AdminPermission.EQUIP_WRITE_OPERATION):
            log.error(u'User does not have permission to perform the operation.')
            raise PermissionDenied("No permission to configure equipment %s-%s" % (equip.id, equip.nome) )

    if all_equipments_are_in_maintenance(equipment_list):
        raise AllEquipmentsAreInMaintenanceException()

    #deploy network configuration
    if request.method == 'POST':
        returned_data = facade.deploy_networkIPv6_configuration(request.user, networkipv6, equipment_list)
    elif request.method == 'DELETE':
        returned_data = facade.remove_deploy_networkIPv6_configuration(request.user, networkipv6, equipment_list)

    return Response(returned_data)
    def test_deploy_networkIPv6_configuration_given_network_already_active(self):
        self.networkv6.active = True

        response = deploy_networkIPv6_configuration(self.user, self.networkv6, self.equipment_list)
        self.assertEqual('Network already active. Nothing to do.', response['output'], "Nothing to be done.No actions should me taken")
    def test_deploy_networkIPv6_configuration_given_gateway_ip_not_found(self):
        self.mock_ip_get_by_blocks_and_net(None)

        with self.assertRaises(IncorrectRedundantGatewayRegistryException):
            deploy_networkIPv6_configuration(self.user, self.networkv6, self.equipment_list)