def save(self): enable = self.cleaned_data.get("ad_enable") if self.__original_changed(): notifier()._clear_activedirectory_config() started = notifier().started("activedirectory") obj = super(ActiveDirectoryForm, self).save() try: utils.get_idmap_object(obj.ds_type, obj.id, obj.ad_idmap_backend) except ObjectDoesNotExist: log.debug('IDMAP backend {} entry does not exist, creating one.'.format(obj.ad_idmap_backend)) utils.get_idmap(obj.ds_type, obj.id, obj.ad_idmap_backend) self.cifs.cifs_srv_netbiosname = self.cleaned_data.get("ad_netbiosname_a") self.cifs.cifs_srv_netbiosname_b = self.cleaned_data.get("ad_netbiosname_b") self.cifs.cifs_srv_netbiosalias = self.cleaned_data.get("ad_netbiosalias") self.cifs.save() if enable: if started is True: started = notifier().restart("activedirectory") if started is False: started = notifier().start("activedirectory") if started is False: self.instance.ad_enable = False super(ActiveDirectoryForm, self).save() raise ServiceFailed( "activedirectory", _("Active Directory failed to reload."), ) else: if started is True: started = notifier().stop("activedirectory") return obj
def save(self): enable = self.cleaned_data.get("ad_enable") if self.__original_changed(): notifier()._clear_activedirectory_config() started = notifier().started("activedirectory") obj = super(ActiveDirectoryForm, self).save() try: utils.get_idmap_object(obj.ds_type, obj.id, obj.ad_idmap_backend) except ObjectDoesNotExist: log.debug( 'IDMAP backend {} entry does not exist, creating one.'.format( obj.ad_idmap_backend)) utils.get_idmap(obj.ds_type, obj.id, obj.ad_idmap_backend) self.cifs.cifs_srv_netbiosname = self.cleaned_data.get( "ad_netbiosname_a") self.cifs.cifs_srv_netbiosname_b = self.cleaned_data.get( "ad_netbiosname_b") self.cifs.cifs_srv_netbiosalias = self.cleaned_data.get( "ad_netbiosalias") self.cifs.save() if enable: if started is True: started = notifier().restart("activedirectory") if started is False: started = notifier().start("activedirectory") if started is False: self.instance.ad_enable = False super(ActiveDirectoryForm, self).save() raise ServiceFailed( "activedirectory", _("Active Directory failed to reload."), ) else: if started is True: started = notifier().stop("activedirectory") return obj
def save(self): enable = self.cleaned_data.get("ad_enable") enable_monitoring = self.cleaned_data.get("ad_enable_monitor") monit_frequency = self.cleaned_data.get("ad_monitor_frequency") monit_retry = self.cleaned_data.get("ad_recover_retry") fqdn = self.cleaned_data.get("ad_domainname") sm = None if self.__original_changed(): notifier().clear_activedirectory_config() started = notifier().started("activedirectory", timeout=_fs().directoryservice.activedirectory.timeout.started) obj = super(ActiveDirectoryForm, self).save() try: utils.get_idmap_object(obj.ds_type, obj.id, obj.ad_idmap_backend) except ObjectDoesNotExist: log.debug('IDMAP backend {} entry does not exist, creating one.'.format(obj.ad_idmap_backend)) utils.get_idmap(obj.ds_type, obj.id, obj.ad_idmap_backend) self.cifs.cifs_srv_netbiosname = self.cleaned_data.get("ad_netbiosname_a") self.cifs.cifs_srv_netbiosname_b = self.cleaned_data.get("ad_netbiosname_b") self.cifs.cifs_srv_netbiosalias = self.cleaned_data.get("ad_netbiosalias") self.cifs.save() if enable: if started is True: timeout = _fs().directoryservice.activedirectory.timeout.restart try: started = notifier().restart("activedirectory", timeout=timeout) except Exception as e: raise MiddlewareError( _("Active Directory restart timed out after %d seconds." % timeout), ) if started is False: timeout = _fs().directoryservice.activedirectory.timeout.start try: started = notifier().start("activedirectory", timeout=timeout) except Exception as e: raise MiddlewareError( _("Active Directory start timed out after %d seconds." % timeout), ) if started is False: self.instance.ad_enable = False super(ActiveDirectoryForm, self).save() raise MiddlewareError( _("Active Directory failed to reload."), ) else: if started is True: timeout = _fs().directoryservice.activedirectory.timeout.stop try: started = notifier().stop("activedirectory", timeout=timeout) except Exception as e: raise MiddlewareError( _("Active Directory stop timed out after %d seconds." % timeout), ) sm_name = 'activedirectory' try: sm = ServiceMonitor.objects.get(sm_name=sm_name) except Exception as e: log.debug("XXX: Unable to find ServiceMonitor: %s", e) pass # # Ports can be specified in the UI but there doesn't appear to be a way to # override them via SRV records. This should be fixed. # dcport = self.get_dcport() gcport = self.get_gcport() if not sm: try: log.debug("XXX: fqdn=%s dcport=%s frequency=%s retry=%s enable=%s", fqdn, dcport, monit_frequency, monit_retry, enable_monitoring) sm = ServiceMonitor.objects.create( sm_name=sm_name, sm_host=fqdn, sm_port=dcport, sm_frequency=monit_frequency, sm_retry=monit_retry, sm_enable=enable_monitoring ) except Exception as e: log.debug("XXX: Unable to create ServiceMonitor: %s", e) raise MiddlewareError( _("Unable to create ServiceMonitor: %s" % e), ) else: sm.sm_name = sm_name if fqdn != sm.sm_host: sm.sm_host = fqdn if dcport != sm.sm_port: sm.sm_port = dcport if monit_frequency != sm.sm_frequency: sm.sm_frequency = monit_frequency if monit_retry != sm.sm_retry: sm.sm_retry = monit_retry if enable_monitoring != sm.sm_enable: sm.sm_enable = enable_monitoring try: sm.save(force_update=True) except Exception as e: log.debug("XXX: Unable to create ServiceMonitor: %s", e) raise MiddlewareError( _("Unable to save ServiceMonitor: %s" % e), ) with client as c: if enable_monitoring and enable: log.debug("[ServiceMonitoring] Add %s service, frequency: %d, retry: %d" % ('activedirectory', monit_frequency, monit_retry)) c.call('servicemonitor.restart') else: log.debug("[ServiceMonitoring] Remove %s service, frequency: %d, retry: %d" % ('activedirectory', monit_frequency, monit_retry)) c.call('servicemonitor.restart') return obj
def save(self): enable = self.cleaned_data.get("ad_enable") enable_monitoring = self.cleaned_data.get("ad_enable_monitor") monit_frequency = self.cleaned_data.get("ad_monitor_frequency") monit_retry = self.cleaned_data.get("ad_recover_retry") fqdn = self.cleaned_data.get("ad_domainname") if self.__original_changed(): notifier().clear_activedirectory_config() started = notifier().started("activedirectory") obj = super(ActiveDirectoryForm, self).save() try: utils.get_idmap_object(obj.ds_type, obj.id, obj.ad_idmap_backend) except ObjectDoesNotExist: log.debug( 'IDMAP backend {} entry does not exist, creating one.'.format( obj.ad_idmap_backend)) utils.get_idmap(obj.ds_type, obj.id, obj.ad_idmap_backend) self.cifs.cifs_srv_netbiosname = self.cleaned_data.get( "ad_netbiosname_a") self.cifs.cifs_srv_netbiosname_b = self.cleaned_data.get( "ad_netbiosname_b") self.cifs.cifs_srv_netbiosalias = self.cleaned_data.get( "ad_netbiosalias") self.cifs.save() if enable: if started is True: started = notifier().restart("activedirectory", timeout=90) if started is False: started = notifier().start("activedirectory", timeout=90) if started is False: self.instance.ad_enable = False super(ActiveDirectoryForm, self).save() raise ServiceFailed( "activedirectory", _("Active Directory failed to reload."), ) else: if started is True: started = notifier().stop("activedirectory", timeout=60) with client as c: if enable_monitoring and enable: log.debug( "[ServiceMonitoring] Add %s service, frequency: %d, retry: %d" % ('activedirectory', monit_frequency, monit_retry)) c.call('service.enable_test_service_connection', monit_frequency, monit_retry, fqdn, 3268, 'activedirectory') else: log.debug( "[ServiceMonitoring] Remove %s service, frequency: %d, retry: %d" % ('activedirectory', monit_frequency, monit_retry)) c.call('service.disable_test_service_connection', monit_frequency, monit_retry, fqdn, 3268, 'activedirectory') return obj
def directoryservice_idmap_backend(request, obj_type, obj_id, idmap_type): data = utils.get_idmap(obj_type, obj_id, idmap_type) content = json.dumps(data) return HttpResponse(content, content_type="application/json")
def save(self): enable = self.cleaned_data.get("ad_enable") enable_monitoring = self.cleaned_data.get("ad_enable_monitor") monit_frequency = self.cleaned_data.get("ad_monitor_frequency") monit_retry = self.cleaned_data.get("ad_recover_retry") fqdn = self.cleaned_data.get("ad_domainname") sm = None if self.__original_changed(): notifier().clear_activedirectory_config() started = notifier().started( "activedirectory", timeout=_fs().directoryservice.activedirectory.timeout.started) obj = super(ActiveDirectoryForm, self).save() try: utils.get_idmap_object(obj.ds_type, obj.id, obj.ad_idmap_backend) except ObjectDoesNotExist: log.debug( 'IDMAP backend {} entry does not exist, creating one.'.format( obj.ad_idmap_backend)) utils.get_idmap(obj.ds_type, obj.id, obj.ad_idmap_backend) self.cifs.cifs_srv_netbiosname = self.cleaned_data.get( "ad_netbiosname_a") self.cifs.cifs_srv_netbiosname_b = self.cleaned_data.get( "ad_netbiosname_b") self.cifs.cifs_srv_netbiosalias = self.cleaned_data.get( "ad_netbiosalias") self.cifs.save() if enable: if started is True: timeout = _fs( ).directoryservice.activedirectory.timeout.restart try: started = notifier().restart("activedirectory", timeout=timeout) except Exception as e: raise MiddlewareError( _("Active Directory restart timed out after %d seconds." % timeout), ) if started is False: timeout = _fs().directoryservice.activedirectory.timeout.start try: started = notifier().start("activedirectory", timeout=timeout) except Exception as e: raise MiddlewareError( _("Active Directory start timed out after %d seconds." % timeout), ) if started is False: self.instance.ad_enable = False super(ActiveDirectoryForm, self).save() raise MiddlewareError( _("Active Directory failed to reload."), ) else: if started is True: timeout = _fs().directoryservice.activedirectory.timeout.stop try: started = notifier().stop("activedirectory", timeout=timeout) except Exception as e: raise MiddlewareError( _("Active Directory stop timed out after %d seconds." % timeout), ) sm_name = 'activedirectory' try: sm = ServiceMonitor.objects.get(sm_name=sm_name) except Exception as e: log.debug("XXX: Unable to find ServiceMonitor: %s", e) pass # # Ports can be specified in the UI but there doesn't appear to be a way to # override them via SRV records. This should be fixed. # dcport = self.get_dcport() gcport = self.get_gcport() if not sm: try: log.debug( "XXX: fqdn=%s dcport=%s frequency=%s retry=%s enable=%s", fqdn, dcport, monit_frequency, monit_retry, enable_monitoring) sm = ServiceMonitor.objects.create( sm_name=sm_name, sm_host=fqdn, sm_port=dcport, sm_frequency=monit_frequency, sm_retry=monit_retry, sm_enable=enable_monitoring) except Exception as e: log.debug("XXX: Unable to create ServiceMonitor: %s", e) raise MiddlewareError( _("Unable to create ServiceMonitor: %s" % e), ) else: sm.sm_name = sm_name if fqdn != sm.sm_host: sm.sm_host = fqdn if dcport != sm.sm_port: sm.sm_port = dcport if monit_frequency != sm.sm_frequency: sm.sm_frequency = monit_frequency if monit_retry != sm.sm_retry: sm.sm_retry = monit_retry if enable_monitoring != sm.sm_enable: sm.sm_enable = enable_monitoring try: sm.save(force_update=True) except Exception as e: log.debug("XXX: Unable to create ServiceMonitor: %s", e) raise MiddlewareError( _("Unable to save ServiceMonitor: %s" % e), ) with client as c: if enable_monitoring and enable: log.debug( "[ServiceMonitoring] Add %s service, frequency: %d, retry: %d" % ('activedirectory', monit_frequency, monit_retry)) c.call('servicemonitor.restart') else: log.debug( "[ServiceMonitoring] Remove %s service, frequency: %d, retry: %d" % ('activedirectory', monit_frequency, monit_retry)) c.call('servicemonitor.restart') return obj