Commit Graph

234 Commits (a9c5d8f1460e61327489db7858dc071e0204b7ea)

Author SHA1 Message Date
Chris Goller f0acd1b7e0 Merge branch 'master' into feature/generic-oauth 2017-04-07 15:35:28 -05:00
Chris Goller eb5b288e00 Fix PathEscape work for go 1.7 2017-04-07 15:32:35 -05:00
Chris Goller 65b4789227 Update generic oauth routes to be path escaped. 2017-04-07 15:20:53 -05:00
Chris Goller 84f1263357 Add configurable scopes to generic oauth2 support 2017-04-07 14:58:35 -05:00
Chris Goller 51fdcdb944 Merge branch 'master' into feature/generic-oauth 2017-04-07 08:39:52 -05:00
John Gilden f050b5adc6 Use the Host header from the original Kapacitor URL 2017-04-07 08:15:19 -05:00
Chris Goller 1b189c1eab Update cell dashboard error messags to be descriptive 2017-04-06 17:30:53 -05:00
Chris Goller e81a569de5 Merge branch 'master' into feature/generic-oauth 2017-04-06 16:47:58 -05:00
Chris Goller 4a56fdddfc Add generic oauth2 configuration options 2017-04-06 16:45:33 -05:00
Luke Morris d6fab042ed Merge branch 'master' into hotfix/1193-influxql-no-quotes 2017-04-06 13:51:15 -07:00
Jared Scheib 9df1630cf8 Add new auth duration CLI option; add client heartbeat; fix logout (#1119)
* User can now set oauth cookie session duration via the CLI to any duration or to expire on browser close

* Refactor GET 'me' into heartbeat at constant interval

* Add ping route to all routes

* Add /chronograf/v1/ping endpoint for server status

* Refactor cookie generation to use an interface

* WIP adding refreshable tokens

* Add reminder to review index.js Login error handling

* Refactor Authenticator interface to accommodate cookie duration and logout delay

* Update make run-dev to be more TICKStack compliant

* Remove heartbeat/logout duration from authentication

* WIP Refactor tests to accommodate cookie and auth refactor

* Update oauth2 tests to newly refactored design

* Update oauth provider tests

* Remove unused oauth2/consts.go

* Move authentication middleware to server package

* Fix authentication comment

* Update authenication documentation to mention AUTH_DURATION

* Update /chronograf/v1/ping to simply return 204

* Fix Makefile run-dev target

* Remove spurious ping route

* Update auth docs to clarify authentication duration

* Revert "Refactor GET 'me' into heartbeat at constant interval"

This reverts commit 298a8c47e1.

Conflicts:
ui/src/index.js

* Add auth test for JWT signing method

* Add comments for why coverage isn't written for some areas of jwt code

* Update auth docs to explicitly mention how to require re-auth for all users on server restart

* Add Duration to Validation interface for Tokens

* Make auth duration of zero yield a everlasting token

* Revert "Revert "Refactor GET 'me' into heartbeat at constant interval""

This reverts commit b4773c15af.

* Rename http status constants and add FORBIDDEN

* Heartbeat only when logged in, notify user if heartbeat fails

* Update changelog

* Fix minor word semantics

* Update oauth2 tests to be in the oauth2_test package

* Add check at compile time that JWT implements Tokenizer

* Rename CookieMux to AuthMux for consistency with earlier refactor

* Fix logout middleware

* Fix logout button not showing due to obsolete data shape expectations

* Update changelog

* Fix proptypes for logout button data shape in SideNav
2017-04-06 11:40:57 -07:00
Chris Goller 8ec4c2a32f Workaround InfluxQL bugs by returning original query. 2017-04-06 00:06:15 -05:00
Timothy J. Raymond 42ad7e407a Merge pull request #1168 from influxdata/feature/tr-mountable-router
Prefix all Chronograf routes with Basepath when configured
2017-04-04 17:45:31 -04:00
lukevmorris 2d023c2650 Admin Databases Page no longer breaks if a db is missing an rp (#1179)
* retentionPolicies could be a blank array

* Update CHANGELOG

* Add `retentionPolicies` to swagger docs
2017-04-04 14:42:24 -07:00
Tim Raymond 23c5ff061f Remove unnecessary conditional tests
Re-mounting should only happen if the --prefix-routes option is set. If
this happens, the result will be a no-op as intended since the
--basepath will be "". MountableRouter and http.StripPrefix are both
no-ops with prefix set to ""
2017-04-04 16:29:48 -04:00
Tim Raymond a8dbbf0f0f Favor http.StripPrefix over home-rolled version
http.StripPrefix is a standard library handler which is designed to do
exactly what the inline http.HandlerFunc did (with almost the same
implementation).
2017-04-04 14:03:46 -04:00
Tim Raymond 3177d4ef3c Bypass URLPrefixer if http.Flusher is unavailable
In certain situations, the http.ResponseWriter passed to the URLPrefixer
may not be an http.Flusher. A simple case where this may occur is if the
Prefixer has been wrapped up in a middleware where the above middleware
wraps the ResponseWriter in a ResponseWriter that doesn't implement the
Flush method.

Previously, the Prefixer would error, which would cause the request to
fail with a 500. Instead, the condition is logged and the request is
passed unmodified to the next middleware in the chain. This effectively
disables prefixing for requests where the above ResponseWriter is not an
http.Flusher.

Misc. Changes
=============

- Some tests for "builders" were moved to server/builders_test.go to
  follow with convention. We've been naming files after different things
  under test and leaving the file matching the package name for support
  objects-in this case a mock logger was added to that file.
2017-04-04 10:33:14 -04:00
Tim Raymond d75ee187e6 Add parameter to control mounting behavior
Some load balancers will strip prefixes on their way to the chronograf
backend, others won't. The "--prefix-routes" parameter forces all
requests to the backend to have the prefix specified in "--basepath".
Omitting it will only cause routes to be rewritten in rendered
templates and assumes that the load balancer will remove the prefix.

Use with Caddy
==============

An easy way to test this out is using the free Caddy http server at
http://caddyserver.com.

This Caddyfile will work with the options `--basepath /chronograf
--prefix-routes` set:

```
localhost:2020 {
  proxy /chronograf localhost:8888
  log stdout
}
```

This Caddyfile will work with only the option `--basepath /chronograf`
set:

```
localhost:2020 {
  proxy /chronograf localhost:8888 {
    except /chronograf
  }
  log stdout
}
```
2017-04-04 10:28:46 -04:00
Tim Raymond f35de37257 Use MountableRouter when Basepath is set
This breaks compatibility with the old behavior of --basepath, so this
requires that proxies be configured to not modify routes forwarded to
backends. The old behavior will be supported in a subsequent commit.
2017-04-03 17:09:05 -04:00
Tim Raymond 84cc43cc77 Implement a MountableRouter
The httprouter used in Chronograf did not support prefixing every route
with some basepath. This caused problems for those using the --basepath
parameter in combination with a load balancer that did not strip the
basepath prefix from requests that it forwarded onto Chronograf.

To support this, MountableRouter prefixes all routes at definition time
with the supplied prefix.
2017-04-03 17:06:21 -04:00
Chris Goller 230669921a Fix kapacitor base64 auth as header was built incorrectly. 2017-03-30 15:32:02 -05:00
lukevmorris ae77767c9c Allow InfluxDB and Kapacitor configuration via ENV vars or CLI options (#1129)
* Introduce Kapacitor and InfluxDB as command line options

If omitted, their values will be null at runtime. If supplied, e.g.:
  chronograf
    --kapacitor https://path.to.my:1/kapacitor/instance
    --influxdb  https://path.to.my:1/influxdb/instance
Their values will be accessible via
  Server.Kapacitor
  Server.InfluxDB

* MultiSourcesStore will hold Bolt and config’d sources

* Delegate to db.SourcesStore for now

* Add Username/Password tags for InfluxDB and Kapacitor

* Builders for MultiSourceStore and MultiLayoutStore

* Store Kapacitor and InfluxDB configs in memory

* Typo

* Update CHANGELOG

* Move StoreBuilders to server/builders.go

* Correct these assertions by reversing them

* Kapacitor -> KapacitorURL; InfluxDB -> InfluxDBURL
2017-03-30 09:48:04 -07:00
Jade McGough 7389167e76 Change password (#1120)
Add ability to change a user's password via Admin page
2017-03-29 17:40:46 -07:00
Chris Goller f748aa29a5 Add compression for InfluxQL query responses 2017-03-28 13:10:05 -05:00
Timothy J. Raymond 54dd3e5eee Redirect to default source when deleting sources (#1074)
* Redirect to default source on invalid source ID

When supplied with an invalid source ID, the CheckSources component
would redirect the user to a "Create Source" page. This caused
surprising behavior when a source was deleted because that source ID
would become invalid. The effect being that deleting a source brought
users immediately to the create source page, rather than back to the
sources list.

This instead redirects users to the default source when provided an
invalid source id. The backend automatically re-assigns the "default"
source, so this will always succeed, since sources are fetched again
from the backend.

The regex used is slightly dependent on URL structure that has been
stable over the lifetime of this project. Also it relies on URL
structure more than the previous redirecting implementation.

* Force sources to reload after deletion

Deleting a source invalidates the state held by the client because of
automatic re-assignment of the default source by the backend. Without
duplicating backend logic, it is impossible for the frontend to discover
the new source without reloading sources.

The ManageSources page now uses an async-action creator which deletes
the requested source and reloads all sources. The source action creators
have also been refactored to use implicit returns like other action
creators.

* Remove Dead removeSource action

removeSource is no longer used because the API invalidates its
assumptions. For more information, see 04bf3ca.

* Update Changelog with source deletion redirect fix

Users are no longer unexpectedly redirected to the "create source" page
whenever they delete a source that they are connected to.

* Return 404 when deleting non-existent source

When deleting a source, a new default is assigned automatically. If a
non-existent source ID was provided, previously this would result in a
500. This is a violation of the Swagger docs. The solution is to examine
the error and if it was an ErrSourceNotFound, invoke the notFound
handler.

* Add Error handling to source deletion

There are two kinds of errors that can be encountered when deleting a
source: a 404 and a 500 (from either the delete or the subsequent
fetch).

The 404 is a precondition failure of the action creator. The source.id
requested can be non-existent for two reasons: 1) The action creator was
passed garbage by the caller. 2) A concurrent write occurred which
silently invalidated this session's state. For the first case, we can
ensure that the caller is sane by having an assertion check that the
requested source is among some set of sources. This could be
circumvented by a caller, but chances are good that both the full set of
sources and the desired source are both available to callers of this
action creator. The second case is not an error. In this case, we should
proceed reloading sources, since the deletion that was requested has
already been performed by someone else.

Finally, 500s can only occur if there is something broken with the API.
In this situation, we provide a notification that tells the user to
check the API logs for more information.

* Remove duplicate CHANGELOG entries

These were introduced due to a naive merge conflict resolution.

* Remove assertion

This was decided to be confusing and unnecessary.

* Remove remnants of removed assertion

These were needed for an assertion that has been removed. It's no longer
necessary to pass `sources` to the action creator.
2017-03-28 08:53:11 -07:00
Chris Goller ec8c538c09 Fix go dependency breaking master build 2017-03-24 13:34:56 -07:00
Andrew Watkins 01ec21b483 Merge pull request #1029 from influxdata/feature/db-manager
Feature/db manager
2017-03-24 10:57:12 -07:00
Chris Goller 6bf79c7cb3 Update rpResponse default to isDefault 2017-03-24 10:06:59 -07:00
Chris Goller e8a77be244 Update RP JSON default to isDefault 2017-03-24 09:58:57 -07:00
lukevmorris 2d8d546368 Create a new dashboard cell; Fix remaining bugs with Overlay (#1056)
* Relax query validation for cell endpoint

* Dashboards can now add a cell; Rebase over 950-overlay_technologies-edit

* Server now returns empty queries array when creating a new dashboard cell

* Use async/await pattern for addDashboardCell, add basic error handling

* Update names of methods and actions for editing and updating cells to match those for adding

Factor out newDefaultCell to dashboard constants

* Update CHANGELOG

* Fix bug where Overlay wouldn’t display for query-less cells

* We removed these validations
2017-03-23 17:50:21 -07:00
Jared Scheib 959b387f61 Introduce ability to edit a dashboard cell
* Correct documentation for dashboards

* Exclude .git and use 'make run-dev' in 'make continuous'

* Fix dashboard deletion bug where id serialization was wrong

* Commence creation of overlay technology, add autoRefresh props to DashboardPage

* Enhance overlay magnitude of overlay technology

* Add confirm buttons to overlay technology

* Refactor ResizeContainer to accommodate arbitrary containers

* Refactor ResizeContainer to require explicit ResizeTop and ResizeBottom for clarity

* Add markup and styles for OverlayControls

* CellEditorOverlay needs a larger minimum bottom height to accommodate more things

* Revert Visualization to not use ResizeTop or flex-box

* Remove TODO and move to issue

* Refactor CellEditorOverlay to allow selection of graph type

* Style Overlay controls, move confirm buttons to own stylesheet

* Fix toggle buttons in overlay so active is actually active

* Block user-select on a few UI items

* Update cell query shape to support Visualization and LayoutRenderer

* Code cleanup

* Repair fixture schema; update props for affected components

* Wired up selectedGraphType and activeQueryID in CellEditorOverlay

* Wire up chooseMeasurements in QueryBuilder

Pass queryActions into QueryBuilder so that DataExplorer can provide
actionCreators and CellEditorOverlay can provide functions that
modify its component state

* semicolon cleanup

* Bind all queryModifier actions to component state with a stateReducer

* Overlay Technologies™ can add and delete a query from a cell

* Semicolon cleanup

* Add conversion of InfluxQL to QueryConfig for dashboards

* Update go deps to add influxdb at af72d9b0e4ebe95be30e89b160f43eabaf0529ed

* Updated docs for dashboard query config

* Update CHANGELOG to mention InfluxQL to QueryConfig

* Make reducer’s name more specific for clarity

* Remove 'table' as graphType

* Make graph renaming prettier

* Remove duplicate DashboardQuery in swagger.json

* Fix swagger to include name and links for Cell

* Refactor CellEditorOverlay to enable graph type selection

* Add link.self to all Dashboard cells; add bolt migrations

* Make dash graph names only hover on contents

* Consolidate timeRange format patterns, clean up

* Add cell endpoints to dashboards

* Include Line + Stat in Visualization Type list

* Add cell link to dashboards

* Enable step plot and stacked graph in Visualization

* Overlay Technologies are summonable and dismissable

* OverlayTechnologies saves changes to a cell

* Convert NameableGraph to createClass for state

This was converted from a pure function to encapsulate the state of the
buttons. An attempt was made previously to store this state in Redux,
but it proved too convoluted with the current state of the reducers for
cells and dashboards. Another effort must take place to separate a cell
reducer to manage the state of an individual cell in Redux in order for
this state to be sanely kept in Redux as well.

For the time being, this state is being kept in the component for the
sake of expeditiousness, since this is needed for Dashboards to be
released. A refactor of this will occur later.

* Cells should contain a links key in server response

* Clean up console logs

* Use live data instead of a cellQuery fixture

* Update docs for dashboard creation

* DB and RP are already present in the Command field

* Fix LayoutRenderer’s understanding of query schema

* Return a new object, rather that mutate in place

* Visualization doesn’t use activeQueryID

* Selected is an object, not a string

* QueryBuilder refactored to use query index instead of query id

* CellEditorOverlay refactored to use query index instead of query id

* ConfirmButtons doesn’t need to act on an item

* Rename functions to follow convention

* Queries are no longer guaranteed to have ids

* Omit WHERE and GROUP BY clauses when saving query

* Select new query on add in OverlayTechnologies

* Add click outside to dash graph menu, style menu also

* Change context menu from ... to a caret

More consistent with the rest of the UI, better affordance

* Hide graph context menu in presentation mode

Don’t want people editing a dashboard from presentation mode

* Move graph refreshing spinner so it does not overlap with context menu

* Wire up Cell Menu to Overlay Technologies

* Correct empty dashboard type

* Refactor dashboard spec fixtures

* Test syncDashboardCell reducer

* Remove Delete button from graph dropdown menu (for now)

* Update changelog
2017-03-23 17:12:33 -07:00
Chris Goller 2c874e4e53 Fix retention policies responses and change to PATCH 2017-03-23 14:30:24 -07:00
Chris Goller 98799cc442 Fix sources test to include databases link 2017-03-23 14:06:52 -07:00
Chris Goller 768bd12541 Add retention policies to the database response 2017-03-23 13:53:28 -07:00
Chris Goller 83ee057f56 Fix exported method to be internal 2017-03-23 13:34:09 -07:00
Chris Goller 2cd5e50442 Add retention policy link to databases and add comments 2017-03-23 13:29:13 -07:00
Chris Goller 8827093bc6 Update databases/retention policy link responses 2017-03-23 13:16:02 -07:00
Jade McGough baf7a938c4 Merge branch 'dbrp' into feature/db-manager 2017-03-23 11:24:40 -07:00
Jade McGough e58a846f7b updateRP 2017-03-23 06:13:41 -07:00
Jade McGough 2a990e2b3e clean up some dashboards code 2017-03-23 05:49:33 -07:00
Jade McGough c547ca5ebc add missing patch responses swagger 2017-03-23 05:16:49 -07:00
Jade McGough ba8609d7b6 go format 2017-03-23 04:56:36 -07:00
Jade McGough b40a90b9d1 dropRP 2017-03-23 04:51:08 -07:00
Jade McGough b378dd7c27 createRP 2017-03-23 04:27:53 -07:00
Jade McGough 2438090e70 get retention policies 2017-03-23 03:06:59 -07:00
Jade McGough 766ee9b517 drop db API 2017-03-23 01:04:35 -07:00
Jade McGough c21a378629 db creation seems to be working 2017-03-22 23:21:21 -07:00
Jade McGough 523a0788f7 WIP 2017-03-22 22:21:25 -07:00
Jade McGough 15b2744a5c write db info to dbresponse 2017-03-22 13:46:30 -07:00
Jade McGough 6a4c4122bb it's working! 2017-03-22 13:27:36 -07:00