Beispiel #1
0
def begin_creating_service_settings(settings_uuid, transition_entity=None):
    settings = transition_entity
    try:
        backend = settings.get_backend()
        backend.sync()
    except ServiceBackendNotImplemented:
        pass
Beispiel #2
0
def begin_recovering_erred_service_settings(settings_uuid, transition_entity=None):
    settings = models.ServiceSettings.objects.get(uuid=settings_uuid)

    try:
        backend = settings.get_backend()
        is_active = backend.ping()
    except ServiceBackendNotImplemented:
        is_active = False

    if is_active:
        settings.set_in_sync()
        settings.error_message = ''
        settings.save()
        logger.info('Service settings %s successfully recovered.' % settings.name)

        try:
            spl_model = SupportedServices.get_service_models()[settings.type]['service_project_link']
            erred_spls = spl_model.objects.filter(service__settings=settings,
                                                  state=SynchronizationStates.ERRED)
            recover_erred_services.delay([spl.to_string() for spl in erred_spls])
        except KeyError:
            logger.warning('Failed to recover service project links for settings %s', settings)
    else:
        settings.set_erred()
        settings.error_message = 'Failed to ping service settings %s' % settings.name
        settings.save()
        logger.info('Failed to recover service settings %s.' % settings.name)
Beispiel #3
0
 def _validate_settings(self, settings):
     backend = settings.get_backend()
     try:
         if not backend.check_admin_tenant():
             raise serializers.ValidationError({
                 'non_field_errors':
                 _('Provided credentials are not for admin tenant.')
             })
     except OpenStackBackendError:
         raise serializers.ValidationError(
             {'non_field_errors': _('Unable to validate credentials.')})