def do_uninstall(self, args): """ Uninstall DIRAC component usage: uninstall <system> <component> """ argss = args.split() if not argss or len(argss) != 2: print self.do_uninstall.__doc__ return system, component = argss client = SystemAdministratorClient(self.host, self.port) result = client.uninstallComponent(system, component) if not result['OK']: print "Error:", result['Message'] else: print "Successfully uninstalled %s/%s" % (system, component)
def do_uninstall( self, args ): """ Uninstall DIRAC component usage: uninstall <system> <component> """ argss = args.split() if not argss or len(argss) != 2: print self.do_uninstall.__doc__ return system,component = argss client = SystemAdministratorClient( self.host, self.port ) result = client.uninstallComponent( system, component ) if not result['OK']: print "Error:", result['Message'] else: print "Successfully uninstalled %s/%s" % (system,component)
def do_uninstall( self, args ): """ Uninstall DIRAC component usage: uninstall db <database> uninstall <-f ForceLogUninstall> <system> <component> """ argss = args.split() if not argss: gLogger.notice( self.do_uninstall.__doc__ ) return # Retrieve user uninstalling the component result = getProxyInfo() if not result[ 'OK' ]: self.__errMsg( result[ 'Message'] ) user = result[ 'Value' ][ 'username' ] option = argss[0] if option == 'db': component = argss[1] client = SystemAdministratorClient( self.host, self.port ) result = client.getHostInfo() if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return else: cpu = result[ 'Value' ][ 'CPUModel' ] hostname = self.host result = client.getAvailableDatabases() if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return system = result[ 'Value' ][ component ][ 'System' ] result = MonitoringUtilities.monitorUninstallation( system , component, hostname = hostname, cpu = cpu ) if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return result = client.uninstallDatabase( component ) if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) else: gLogger.notice( "Successfully uninstalled %s" % ( component ) ) else: if option == '-f': force = True del argss[0] else: force = False if len( argss ) != 2: gLogger.notice( self.do_uninstall.__doc__ ) return system, component = argss client = SystemAdministratorClient( self.host, self.port ) monitoringClient = ComponentMonitoringClient() result = monitoringClient.getInstallations( { 'Instance': component, 'UnInstallationTime': None }, { 'System': system }, { 'HostName': self.host }, True ) if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return if len( result[ 'Value' ] ) < 1: self.__errMsg( "Given component does not exist" ) return if len( result[ 'Value' ] ) > 1: self.__errMsg( "Too many components match" ) return removeLogs = False if force: removeLogs = True else: if result[ 'Value' ][0][ 'Component' ][ 'Type' ] in self.runitComponents: result = promptUser( 'Remove logs?', ['y', 'n'], 'n' ) if result[ 'OK' ]: removeLogs = result[ 'Value' ] == 'y' result = client.uninstallComponent( system, component, removeLogs ) if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) else: gLogger.notice( "Successfully uninstalled %s/%s" % ( system, component ) ) result = client.getHostInfo() if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return else: cpu = result[ 'Value' ][ 'CPUModel' ] hostname = self.host result = MonitoringUtilities.monitorUninstallation( system, component, hostname = hostname, cpu = cpu ) if not result[ 'OK' ]: return result
def __componentAction( self , action = None ): """ Actions which should be done on components. The only parameters is an action to perform. Returns standard JSON response structure with with service response or error messages """ DN = getUserDN() group = getSelectedGroup() if ( not action ) or ( not len( action ) > 0 ): error = "Action is not defined or has zero length" gLogger.debug( error ) return { "success" : "false" , "error" : error } if action not in [ "restart" , "start" , "stop" , "uninstall" ]: error = "The request parameters action '%s' is unknown" % action gLogger.debug( error ) return { "success" : "false" , "error" : error } self.action = action result = dict() for i in request.params: if i == "action": continue target = i.split( " @ " , 1 ) if not len( target ) == 2: continue system = request.params[ i ] gLogger.always( "System: %s" % system ) host = target[ 1 ] gLogger.always( "Host: %s" % host ) component = target[ 0 ] gLogger.always( "Component: %s" % component ) if not host in result: result[ host ] = list() result[ host ].append( [ system , component ] ) if not len( result ) > 0: error = "Failed to get component(s) for %s" % action gLogger.debug( error ) return { "success" : "false" , "error" : error } gLogger.always( result ) self.actionSuccess = list() self.actionFailed = list() for hostname in result.keys(): if not len( result[ hostname ] ) > 0: continue client = SystemAdministratorClient( hostname , None , delegatedDN=DN , delegatedGroup=group ) for i in result[ hostname ]: system = i[ 0 ] component = i[ 1 ] try: if action == "restart": result = client.restartComponent( system , component ) elif action == "start": result = client.startComponent( system , component ) elif action == "stop": result = client.stopComponent( system , component ) elif action == "uninstall": result = client.uninstallComponent( system , component ) else: result = list() result[ "Message" ] = "Action %s is not valid" % action except Exception, x: result = list() result[ "Message" ] = "Exception: %s" % str( x ) gLogger.debug( "Result: %s" % result ) if not result[ "OK" ]: error = hostname + ": " + result[ "Message" ] self.actionFailed.append( error ) gLogger.error( "Failure during component %s: %s" % ( action , error ) ) else: gLogger.always( "Successfully %s component %s" % ( action , component ) ) self.actionSuccess.append( component )
def do_uninstall( self, args ): """ Uninstall DIRAC component usage: uninstall db <database> uninstall <-f ForceLogUninstall> <system> <component> """ argss = args.split() if not argss: gLogger.notice( self.do_uninstall.__doc__ ) return option = argss[0] if option == 'db': component = argss[1] client = SystemAdministratorClient( self.host, self.port ) result = client.uninstallDatabase( component ) if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) else: gLogger.notice( "Successfully uninstalled %s" % ( component ) ) result = client.getHostInfo() if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return else: cpu = result[ 'Value' ][ 'CPUModel' ] hostname = self.host result = client.getAvailableDatabases() if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return system = result[ 'Value' ][ component ][ 'System' ] result = MonitoringUtilities.monitorUninstallation( system , component, hostname = hostname, cpu = cpu ) if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return else: if option == '-f': force = True del argss[0] else: force = False if len( argss ) != 2: gLogger.notice( self.do_uninstall.__doc__ ) return system, component = argss client = SystemAdministratorClient( self.host, self.port ) monitoringClient = ComponentMonitoringClient() result = monitoringClient.getInstallations( { 'Instance': component, 'UnInstallationTime': None }, { 'System': system }, { 'HostName': self.host }, True ) if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return if len( result[ 'Value' ] ) < 1: self.__errMsg( "Given component does not exist" ) return if len( result[ 'Value' ] ) > 1: self.__errMsg( "Too many components match" ) return removeLogs = False if force: removeLogs = True else: if result[ 'Value' ][0][ 'Component' ][ 'Type' ] in self.runitComponents: result = promptUser( 'Remove logs?', ['y', 'n'], 'n' ) if result[ 'OK' ]: removeLogs = result[ 'Value' ] == 'y' result = client.uninstallComponent( system, component, removeLogs ) if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) else: gLogger.notice( "Successfully uninstalled %s/%s" % ( system, component ) ) result = client.getHostInfo() if not result[ 'OK' ]: self.__errMsg( result[ 'Message' ] ) return else: cpu = result[ 'Value' ][ 'CPUModel' ] hostname = self.host result = MonitoringUtilities.monitorUninstallation( system, component, hostname = hostname, cpu = cpu ) if not result[ 'OK' ]: return result
def do_uninstall( self, args ): """ Uninstall a DIRAC component or host along with all its components usage: uninstall db <database> uninstall host <hostname> uninstall <-f ForceLogUninstall> <system> <component> """ argss = args.split() if not argss: gLogger.notice( self.do_uninstall.__doc__ ) return # Retrieve user uninstalling the component result = getProxyInfo() if not result[ 'OK' ]: self._errMsg( result[ 'Message'] ) user = result[ 'Value' ][ 'username' ] option = argss[0] if option == 'db': del argss[0] if not argss: gLogger.notice( self.do_uninstall.__doc__ ) return component = argss[0] client = SystemAdministratorClient( self.host, self.port ) result = client.getHostInfo() if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) return else: cpu = result[ 'Value' ][ 'CPUModel' ] hostname = self.host result = client.getAvailableDatabases() if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) return system = result[ 'Value' ][ component ][ 'System' ] result = MonitoringUtilities.monitorUninstallation( system , component, hostname = hostname, cpu = cpu ) if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) return result = client.uninstallDatabase( component ) if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) else: gLogger.notice( "Successfully uninstalled %s" % ( component ) ) elif option == 'host': del argss[0] if not argss: gLogger.notice( self.do_uninstall.__doc__ ) return hostname = argss[0] client = ComponentMonitoringClient() result = client.hostExists( { 'HostName': hostname } ) if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) else: if not result[ 'Value' ]: self._errMsg( 'Given host does not exist' ) else: result = client.getHosts( {'HostName': hostname }, True, False ) if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) else: host = result[ 'Value' ][0] # Remove every installation associated with the host for installation in host[ 'Installations' ]: result = client.removeInstallations( installation, {}, { 'HostName': hostname } ) if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) break # Finally remove the host result = client.removeHosts( { 'HostName': hostname } ) if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) else: gLogger.notice( 'Host %s was successfully removed' % hostname ) else: if option == '-f': force = True del argss[0] else: force = False if len( argss ) != 2: gLogger.notice( self.do_uninstall.__doc__ ) return system, component = argss client = SystemAdministratorClient( self.host, self.port ) monitoringClient = ComponentMonitoringClient() result = monitoringClient.getInstallations( { 'Instance': component, 'UnInstallationTime': None }, { 'System': system }, { 'HostName': self.host }, True ) if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) return if len( result[ 'Value' ] ) < 1: self._errMsg( "Given component does not exist" ) return if len( result[ 'Value' ] ) > 1: self._errMsg( "Too many components match" ) return removeLogs = False if force: removeLogs = True else: if result[ 'Value' ][0][ 'Component' ][ 'Type' ] in self.runitComponents: result = promptUser( 'Remove logs?', ['y', 'n'], 'n' ) if result[ 'OK' ]: removeLogs = result[ 'Value' ] == 'y' result = client.uninstallComponent( system, component, removeLogs ) if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) else: gLogger.notice( "Successfully uninstalled %s/%s" % ( system, component ) ) result = client.getHostInfo() if not result[ 'OK' ]: self._errMsg( result[ 'Message' ] ) return else: cpu = result[ 'Value' ][ 'CPUModel' ] hostname = self.host result = MonitoringUtilities.monitorUninstallation( system, component, hostname = hostname, cpu = cpu ) if not result[ 'OK' ]: return result