コード例 #1
0
ファイル: appinstall.py プロジェクト: linearregression/splunk
 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
コード例 #2
0
 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()
コード例 #3
0
ファイル: steps.py プロジェクト: DRArpitha/splunk
 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
コード例 #4
0
ファイル: steps.py プロジェクト: downloadmorerim/splunk-apps
    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
コード例 #5
0
ファイル: appinstall.py プロジェクト: linearregression/splunk
    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
                })
コード例 #6
0
    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
            })