def upload(self, appid, return_to=None, breadcrumbs=None, state=None, appfile=None, force=None, **kw): """ Present a form for direct upload of an app """ if state: state = StateDict.unserialize(state) breadcrumbs = state.get('breadcrumbs') else: breadcrumbs = parse_breadcrumbs_string(breadcrumbs) breadcrumbs.append([_('Upload app'), None]) state = StateDict({ 'return_to': return_to if return_to else self.make_url( ['manager', splunk.getDefault('namespace')], translate=False), 'breadcrumbs': breadcrumbs }) error = None if appfile is not None and cherrypy.request.method == 'POST': try: force = (force == '1') appid = self.processAppUpload(appfile, force) module.moduleMapper.resetInstalledModules() memoizedViews.clearCachedViews() return self.checkstatus(appid, state=state) except SBFileUploadException, e: error = e.message
def upload(self, appid, return_to=None, breadcrumbs=None, state=None, appfile=None, force=None, **kw): """ Present a form for direct upload of an app """ if state: state = StateDict.unserialize(state) breadcrumbs = state.get('breadcrumbs') else: breadcrumbs = parse_breadcrumbs_string(breadcrumbs) breadcrumbs.append([_('Upload app'), None]) state = StateDict({ 'return_to': return_to if return_to else self.make_url(['manager', splunk.getDefault('namespace'), 'apps','local'], translate=False), 'breadcrumbs': breadcrumbs }) error = None if appfile is not None and cherrypy.request.method == 'POST': try: force = (force == '1') appid = self.processAppUpload(appfile, force) module.moduleMapper.resetInstalledModules() memoizedViews.clearCachedViews() return self.checkstatus(appid, state=state) except SBFileUploadException, e: error = e.message except splunk.RESTException, e: error = e.get_extended_message_text()
def prepare_breadcrumbs(self, bc, ns): if len(bc) > 0: crumbs = util.parse_breadcrumbs_string(bc) else: crumbs = [[_('Manager'), self.make_url(['manager'], translate=False)], [_('Data inputs'), self.make_url(['manager', ns, 'datainputstats'], translate=False)]] crumbs.extend([[_('Files & directories'), self.make_url(['manager', ns, 'data/inputs/monitor'], translate=False)], [_('Data preview'), None]]) return crumbs
def prepare_breadcrumbs(self, bc, ns): if len(bc) > 0: crumbs = util.parse_breadcrumbs_string(bc) else: crumbs = [[ _('Manager'), self.make_url(['manager'], translate=False) ], [ _('Data inputs'), self.make_url(['manager', ns, 'datainputstats'], translate=False) ]] crumbs.extend([[ _('Files & directories'), self.make_url(['manager', ns, 'data/inputs/monitor'], translate=False) ], [_('Data preview'), None]]) return crumbs
def start(self, appid, return_to=None, return_to_success=None, breadcrumbs=None, implicit_id_required=None, error=None, state=None, **kw): """ The main entry point for installing or updating an app params: return_to - optional return address on completion return_to_success - optional return address used in favour or return_to if the app install is succesful breadcrumbs - pipe separated list of name|url tuples. tuples themselves are joined by tabs. error - internally used error message state - internally used StateDict object """ current_app = self.getLocalApp(appid) # state is a dict sublcass for storing things like the return_to url # that can be serialized to a URL-safe string by calling .serialize() on it # and restored by passing the raw data to StateDict.unserialize() if state: state = StateDict.unserialize(state) breadcrumbs = state['breadcrumbs'] else: breadcrumbs = parse_breadcrumbs_string(breadcrumbs) breadcrumbs.append([_('Install app'), None]) state = StateDict({ 'return_to': return_to if return_to else self.make_url( ['manager', splunk.getDefault('namespace')], translate=False), 'return_to_success': return_to_success, 'breadcrumbs': breadcrumbs, 'implicit_id_required': implicit_id_required }) if current_app: # check whether a newer version is available if self.appUpgradeAvailable(current_app): state['implicit_id_required'] = current_app.get( 'update.implicit_id_required', None) return self.render_admin_template( '/admin/appinstall/upgrade-available.html', { 'app': current_app, 'appid': appid, 'breadcrumbs': breadcrumbs, 'error': error, 'state': state }) if self.isRestartRequired() or self.appNeedsSetup(current_app): # app is installed but hasn't been setup, or a restart is required return self.redirect_to_url( ['/manager/appinstall', appid, 'checkstatus'], {'state': state.serialize()}) # else the app is already installed and no upgrades are available return self.render_admin_template( '/admin/appinstall/already-installed.html', { 'app': current_app, 'appid': appid, 'state': state, 'breadcrumbs': breadcrumbs }) # see whether the app exists on Splunkbase (and thus whether Splunkbase is even reachable) try: remote_app = self.getRemoteAppEntry(appid) except splunk.ResourceNotFound: # app doesn't exist on splunkbase; allow for manual upload return self.render_admin_template( '/admin/appinstall/app-not-found.html', { 'appid': appid, 'breadcrumbs': breadcrumbs, 'state': state }) except splunk.RESTException, e: if e.statusCode == 503: # splunkd will return 503 if it's configured not to contact splunkbase error = None else: # else something else went wrong error = str(e) return self.render_admin_template( '/admin/appinstall/no-internet.html', { 'appid': appid, 'breadcrumbs': breadcrumbs, 'state': state, 'error': error })
def start(self, appid, return_to=None, return_to_success=None, breadcrumbs=None, implicit_id_required=None, error=None, state=None, **kw): """ The main entry point for installing or updating an app params: return_to - optional return address on completion return_to_success - optional return address used in favour or return_to if the app install is succesful breadcrumbs - pipe separated list of name|url tuples. tuples themselves are joined by tabs. error - internally used error message state - internally used StateDict object """ current_app = self.getLocalApp(appid) # state is a dict sublcass for storing things like the return_to url # that can be serialized to a URL-safe string by calling .serialize() on it # and restored by passing the raw data to StateDict.unserialize() if state: state = StateDict.unserialize(state) breadcrumbs = state['breadcrumbs'] else: breadcrumbs = parse_breadcrumbs_string(breadcrumbs) breadcrumbs.append([_('Install app'), None]) state = StateDict({ 'return_to': return_to if return_to else self.make_url(['manager', splunk.getDefault('namespace'), 'apps','local'], translate=False), 'return_to_success': return_to_success, 'breadcrumbs': breadcrumbs, 'implicit_id_required': implicit_id_required }) if current_app: # check whether a newer version is available if self.appUpgradeAvailable(current_app): state['implicit_id_required'] = current_app.get('update.implicit_id_required', None) return self.render_admin_template('/admin/appinstall/upgrade-available.html', { 'app': current_app, 'appid': appid, 'breadcrumbs': breadcrumbs, 'error': error, 'state': state }) if self.isRestartRequired() or self.appNeedsSetup(current_app): # app is installed but hasn't been setup, or a restart is required return self.redirect_to_url(['/manager/appinstall', appid, 'checkstatus'], { 'state': state.serialize() }) # else the app is already installed and no upgrades are available return self.render_admin_template('/admin/appinstall/already-installed.html', { 'app': current_app, 'appid': appid, 'state': state, 'breadcrumbs': breadcrumbs }) # see whether the app exists on Splunkbase (and thus whether Splunkbase is even reachable) try: remote_app = self.getRemoteAppEntry(appid) except splunk.ResourceNotFound: # app doesn't exist on splunkbase; allow for manual upload return self.render_admin_template('/admin/appinstall/app-not-found.html', { 'appid': appid, 'breadcrumbs': breadcrumbs, 'state': state }) except splunk.RESTException, e: if e.statusCode == 503: # splunkd will return 503 if it's configured not to contact splunkbase error = None else: # else something else went wrong error = str(e) return self.render_admin_template('/admin/appinstall/no-internet.html', { 'appid': appid, 'breadcrumbs': breadcrumbs, 'state': state, 'error': error })