Commit Graph

209 Commits (9c9955539052a334d009fe3165ecdd1cf3838495)

Author SHA1 Message Date
Jared Scheib 19369b38cc Set Scheme to be OAuth2 explicitly for all users
Add Provider to Users authenticated via /me

Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-19 14:32:33 -05:00
Michael Desa 8d472646cd Fix wrong authorization level on selected routes
Fix leaking of username on failed authorization

Add comment to chronograf.UserQuery

Fix logic in hasPrivilege method
2017-10-18 15:45:06 -04:00
Michael Desa 246e65e598 Generalize chronograf.UsersStore Get method
The `Get` method on the UsersStore was generalize by changing the second
parameter to a struct. This allows the Store to retrieve users by more
than simply their name.

-Get(ctx context.Context, name string) (*User, error)
+Get(ctx context.Context, q UserQuery) (*User, error)
2017-10-18 14:17:42 -04:00
Chris Goller 340e19f79a Update upper bound relative duration template expansion of :interval: 2017-10-17 14:26:26 -05:00
Nathan Haugo fe2173d6c5 Remove debugging lines and add case for less than 1 ms 2017-10-16 16:23:22 -05:00
Nathan Haugo 0491a7685b Made changes due to review 2017-10-16 16:15:12 -05:00
Chris Goller 7b786657aa Rename queryConfig field to Value and support top/bottom 2017-10-16 10:56:12 -05:00
Nathan Haugo b87befa0b3 Add support for millisecond groupbys 2017-10-11 13:14:44 -07:00
Chris Goller 6d6a2d4a2a WIP supporting integers/floats for influxql arguments 2017-10-11 14:45:01 -05:00
Chris Goller 8e9d5cbc2c Update queryConfig arguments to be optional in JSON response 2017-10-10 23:32:08 -05:00
Chris Goller 3c1b09704e Refactor query config field arguments to be fields 2017-10-10 18:04:45 -05:00
Chris Goller 3ba1a4c94d Refactor queryConfig to have field aliases and function arguments 2017-10-10 17:01:50 -05:00
Jared Scheib 2d88f15fdf Use string IDs in JSON res and req for Users
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-10 12:27:55 -07:00
Jared Scheib eb6c212023 Implement CRUD routes & operations for Chronograf User
Move source Users code into source_users and source_users_test files.
Use the UsersStore for both InfluxDB and Chronograf users.

Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-09 14:16:24 -07:00
Nathan Haugo 4d4a49103f Remove debugging artifacts 2017-10-04 12:51:58 -07:00
Nathan Haugo 9280ba9cbc Merge branch 'master' into feature/port-1.3.8.x-pixel 2017-10-04 12:47:23 -07:00
Nathan Haugo 6cbd33b9ee Fix tests for the updated group by time logic 2017-10-03 16:31:51 -07:00
Nathan Haugo 20360d44cc Port changes from 1.3.8.x for pixels per graph to master 2017-10-03 15:53:33 -07:00
Chris Goller 0e6a06d663 Update dashboard cells to have optional data source URI. 2017-10-02 12:50:42 -07:00
Chris Goller 35248b8044 Update kapacitor AlertRule to containe most Kapacitor Task information 2017-09-09 10:19:52 -05:00
Jared Scheib a8d0b763c3 Add Fill prop to chronograf queryConfig 2017-09-05 18:40:40 -04:00
Tim Raymond f50c4aebe0 Update commenting on new axis options
Existing comments were deemed unclear or inconsistent with convention.
2017-08-24 15:59:46 -07:00
Tim Raymond b08aa236bb Add Scale attribute to Cell Axis
This allows clients to specify the magnitude of numbers found on a
particular axis.
2017-08-24 15:59:42 -07:00
Tim Raymond a0555cf9fe Add Prefix, Suffix, and Base to Axes
We would like to add additional user-configurable options to the display
of axes on Dashboards. This adds three fields to expand settings that
the frontend can persist through the API.

One field of interest here is the "Base" field which controls when and
how axes transition the display of values such as bytes, kilobytes,
megabytes, etc. By default, it's returned from the API as "10" to
indicate decimal, but can be set to anything the frontend wishes--the
immediate differing value will be "2" for the aforementioned use case.
2017-08-24 15:59:41 -07:00
Tim Raymond 8c1a091f62 Add nanosecond precision to :interval: calc
The UI for selecting time ranges produces nanosecond-precision times
for the template variables in the absolute time range. The regex for
absolute time ranges previously did not account for this precision,
which caused it to break.

This updates the regex to consider the nanosecond parts of an
RFC3339Nano timestamp and updates the associated tests. The Gobular link
has also been updated to a fresh playground used to debug this issue.
2017-08-24 11:37:25 -04:00
Timothy J. Raymond 61bffeb7cb Merge pull request #1859 from influxdata/feature/tr-layout-cell-axes
Add Axes to Layout Cells
2017-08-16 16:45:26 -04:00
Tim Raymond f6e1be290c Add Axes to Cells on Layouts
This allows a creator of a layout to specify the visible extents of
graphs for individual cells. For example, a cell displaying a
percentage could be limited to values between 0 and 100.

Existing canned layouts need to updated as a separate step. However,
this adds support for Axes to appear in them as well.
2017-08-10 13:52:43 -07:00
Tim Raymond 228920fde4 Add absolute time range support to :interval:
Previously, users of the :interval: macro were restricted to using a
relative time range in their queries, or the :dashboardTime: macro. This
permits users to also supply an absolute time range in the form of:

time > '2017-01-01T00:00:00Z' and time < '2017-06-01T00:00:00Z'
2017-08-08 11:09:51 -07:00
Tim Raymond a6be00d4f3 Remove omitempty from Axis Label
If the key is always present in the response, it's easier for the front
end to perform tests on contents of its key.
2017-08-02 13:08:33 -04:00
Tim Raymond 532a6a8c48 Merge branch 'master' into feature/1602-graph-bounds-setting
Also removed LegacyBounds marshaling since it was no longer necessary

Conflicts resolved:
	bolt/internal/internal.go
	bolt/internal/internal.pb.go
	bolt/internal/internal.proto
	bolt/internal/internal_test.go
	chronograf.go
	server/cells_test.go
	server/dashboards_test.go
	server/swagger.json
2017-08-02 11:29:29 -04:00
Tim Raymond e545f91d8f Add Label to DashboardCell Axis
It's useful for the frontend to be able to specify a label on a
particular axis. This adds a property to Axis to facilitate that.
2017-08-02 11:12:47 -04:00
Tim Raymond 2ff3e27e1f Convert Axis Bounds to []string
Due to various limitations with the previous implementation of Bounds as
a [2]int64{}, we've decided to change this to a []string{}. This will
allow clients to store arbitrary data specifying a bound and interpret
it as they wish.
2017-07-31 16:35:53 -04:00
Tim Raymond ede85f6964 Enforce only "x", "y", and "y2" axes
For the forseeable future, we will only be using the "x", "y", and "y2"
axes, even though the underlying serialization can support arbitrary
axes (for the future).

This ensures that only "x", "y", and "y2" axes are present and updates
the Swagger docs to reflect that fact
2017-07-24 14:06:15 -04:00
Tim Raymond a5bdc5ff61 s/DashboardRange/Axis, format protobufs, 64-bit
"Axis" is a more consistent and appropriate name. Also, the formatting
the protobufs was all over the place, so this has been made consistent
using a first-column \t. Furthermore, a vim modeline was added to the
bottom to make it easier for editors to autoconfigure themselves to the
right format, since protobufs are not something that we edit everyday.

Also, 32-bit values have been substituted for 64-bit values in Protobuf
definitions.
2017-07-24 14:03:48 -04:00
Tim Raymond cbbfd312ca Add Axes to Dashboard Cells
The frontend would like to store viewport information for each cell so
that visualizations are zoomed to the proper extents upon rendering.
This adds a property to cells called "axes" which takes the following
shape:

```
{
   "axes" : {
      "y" : {
         "bounds" : [
            0,
            2
         ]
      },
      "y2" : {
         "bounds" : [
            1,
            3
         ]
      }
   }
}
```

Bounds specify the visible range for the axis, and are a 2-tuple of the
form [lower, upper]. Bounds are not implicitly inclusive or
exclusive--that determination is left for clients to make. Also, there
are no restrictions on the naming of axes.
2017-07-24 13:45:28 -04:00
Tim Raymond ee6a2fa54b Enforce only "x", "y", and "y2" axes
For the forseeable future, we will only be using the "x", "y", and "y2"
axes, even though the underlying serialization can support arbitrary
axes (for the future).

This ensures that only "x", "y", and "y2" axes are present and updates
the Swagger docs to reflect that fact
2017-07-21 12:09:49 -04:00
Tim Raymond 617fc38b14 s/DashboardRange/Axis, format protobufs, 64-bit
"Axis" is a more consistent and appropriate name. Also, the formatting
the protobufs was all over the place, so this has been made consistent
using a first-column \t. Furthermore, a vim modeline was added to the
bottom to make it easier for editors to autoconfigure themselves to the
right format, since protobufs are not something that we edit everyday.

Also, 32-bit values have been substituted for 64-bit values in Protobuf
definitions.
2017-07-20 14:42:51 -04:00
Tim Raymond f05c1d0774 Add Axes to Dashboard Cells
The frontend would like to store viewport information for each cell so
that visualizations are zoomed to the proper extents upon rendering.
This adds a property to cells called "axes" which takes the following
shape:

```
{
   "axes" : {
      "y" : {
         "bounds" : [
            0,
            2
         ]
      },
      "y2" : {
         "bounds" : [
            1,
            3
         ]
      }
   }
}
```

Bounds specify the visible range for the axis, and are a 2-tuple of the
form [lower, upper]. Bounds are not implicitly inclusive or
exclusive--that determination is left for clients to make. Also, there
are no restrictions on the naming of axes.
2017-07-19 10:46:32 -04:00
Chris Goller 8dc08278bd Add JWT shared secret influxdb auth
Refactor --new-sources to simplify adding shared secrets
2017-07-19 01:39:06 -05:00
Hunter Trujillo 025af5c1ca Merge branch 'master' into feature/1482-custom-time-range
# Conflicts:
#	ui/src/style/pages/dashboards.scss
2017-07-10 16:09:14 -06:00
Hunter Trujillo 7846beff3f Fix quoting around timeStamps. Affects server code. 2017-07-10 15:33:48 -06:00
Jared Scheib d7e73f55ad Move NewSources input prep to server
Signed-off-by: Tim Raymond <tim@timraymond.com>
2017-07-06 14:12:07 -07:00
Jared Scheib e61ffaa6a3 Clarify comment 2017-07-06 13:47:39 -07:00
Jared Scheib c455592103 Remove check on already existing Kapacitor
Clean up conditionals by refactoring to use loop label.
Incidentally this also fixed a bug that would not allow
a Kapacitor server to be added by the same name as one
that already existed, allowing the check to be removed
as well.
2017-07-06 12:18:33 -07:00
Jared Scheib f49badf4f0 Clean up conditionals 2017-07-06 12:04:34 -07:00
Jared Scheib 340ed6f40e Move throwaway parsing type into NewSources 2017-07-06 11:57:02 -07:00
Jared Scheib 3c3602a724 Update error messages to use plural 2017-07-06 11:48:14 -07:00
Jared Scheib 0c0d1a0e78 Log info if source already exists 2017-07-06 11:19:10 -07:00
Jared Scheib 52e65be69d Successfully persist new source and kapa via server flag
Move this to after BoltDb connection is opened
2017-07-05 18:12:08 -07:00
Luke Morris 68af7508d4 Tested + fixed bug in GROUP BY interval calculation 2017-06-16 15:54:15 -07:00
Tim Raymond a129fc29c0 Documentation++
Improve spellingz and document what "resolution" actually means in the
context of a query
2017-06-15 20:42:46 -04:00
Tim Raymond & Jared Scheib 5ce8a9dea5 Remove stubbed-out auto group by option
This was present for testing in development and is no longer needed.
2017-06-15 17:43:16 -04:00
Tim Raymond & Jared Scheib 5cd742b6ab Update Group By Dropdown with Auto Option
This adds an "auto" option to the group by dropdown which interpolates
"GROUP BY :autoGroupBy:" to the query.
2017-06-15 17:41:55 -04:00
Tim Raymond aa1e3cd4d2 Move hardcoded reporting interval to client side
There's some follow-on work to be done here to determine an appropriate
value for the reporting interval, but for now this lets the client
supply it.
2017-06-14 10:54:02 -04:00
Tim Raymond 48eb27ef6e Prevent panic when where clause not found
This adds a bounds check to make sure that we don't overrun the end of
the string when searching for a where clause.
2017-06-14 10:54:02 -04:00
Tim Raymond 9310aa07ae Swap time.ParseDuration for influxql.ParseDuration
In order to properly parse time ranges including `days` and `weeks` like
`time > now() - 180d`, we need to use the `influxql.ParseDuration`
function
2017-06-14 10:54:02 -04:00
Tim Raymond 66be46bf23 Fix :dashboardTime: by introducing tvar precedence
In order for :autoGroupBy: and :dashboardTime: to co-exist in a query,
it's necessary to introduce template variable precedence to the backend.
This is done by adding a `Precedence()` method to the TemplateVariable
interface that returns an ordinal indicating the precedence level of the
template variable. Precedence starts from 0 (highest) proceeding to the
maximum that a `uint` can represent.

A template variable at a given precedence level can expect that all
template variables with higher precedence will have already been
replaced in the query that is passed to its `Exec` call.

For example, :autoGroupBy: has lower precedence than :dashboardTime:
because it needs to know the selected time range for the query. When the
`Exec` method of `GroupByVar` is invoked, it will see the query after
:dashboardTime: has already been replaced, allowing it to extract the
duration successfully.
2017-06-14 10:54:02 -04:00
Tim Raymond a7cc6040d3 Add hacks to make AGB work with the frontend 2017-06-14 10:54:02 -04:00
Tim Raymond 5418592df8 Add parsing of Group By Duration from the query
In order for automatic group by to be remotely useful, we need to parse
out the selected duration of time from the query itself. The problem
with doing this is that using the existing machinery for parsing
InfluxQL requires having valid InfluxQL, which InfluxQL+Template
Variables is not. To break this chicken-and-egg problem, the duration is
directly extracted from the query using regular string processing.
2017-06-14 10:52:29 -04:00
Tim Raymond 2efdd4b363 Working dynamic json Unmarshaling 2017-06-14 10:52:29 -04:00
Tim Raymond fd5036ed20 Add support for :autoGroupBy: template variable
This adds support for dynamic template variables that compute something
about themselves given some additional context.
2017-06-13 14:59:56 -04:00
lukevmorris 611795ecdd Need RangeValue to correctly calculate Alert graph range (#1406)
* Need RangeValue to correctly calculate Alert graph range

* Update CHANGELOG
2017-05-05 15:00:04 -07:00
Chris Goller 3821b1ccff Update Kapacitor alerts to set queryConfig to null if not parsable. 2017-05-05 14:30:20 -05:00
Andrew Watkins 92bd5d10b4 Resolve conflicts
Conflicts:
	ui/src/utils/influxql.js
2017-05-05 10:01:26 -07:00
Chris Goller 7a577f6618 Add Range.Lower and Range.Upper to query config to persist custom ranges 2017-05-02 15:08:51 -05:00
Hunter Trujillo 116c2e3c23 Merge branch 'master' into feature/template-variables
# Conflicts:
#	bolt/internal/internal.pb.go
#	ui/src/CheckSources.js
#	ui/src/dashboards/actions/index.js
#	ui/src/dashboards/containers/DashboardPage.js
#	ui/src/data_explorer/components/Visualization.js
#	ui/src/shared/components/AutoRefresh.js
#	ui/src/shared/components/Dropdown.js
2017-04-25 17:08:55 -06:00
Jared Scheib a993686130 Revert FieldKey struct schema changes to chronograf that break build 2017-04-21 19:06:24 -07:00
Hunter Trujillo 9e56b9776c Fix TVM UX flow issue with a React lifecycle antipattern; make TVM editing mode consistent 2017-04-21 19:52:01 -06:00
Jade McGough cbdf067a56 persist the currently active kapacitor in boltdb 2017-04-21 12:42:35 -07:00
Chris Goller c1e8786474 Update template query json key to be influxql 2017-04-20 18:23:59 -05:00
Chris Goller 8dcf168ea3 Add fields to store pieces of meta queries 2017-04-20 14:30:17 -05:00
Chris Goller d4f4530565 Add template structure definitions to chronograf 2017-04-20 10:33:47 -05:00
Chris Goller 4ba46c8c0d Move template variables into chronograf.go 2017-04-19 11:18:23 -05:00
Chris Goller 16a202ce8c Merge branch 'master' into feature/reverse-kapa 2017-04-11 12:52:49 -05:00
Chris Goller 313f7e94ca Update rawtext in queryconfig to be null and not omitempty 2017-04-07 17:32:10 -05:00
lukevmorris fe1138ba39 Use Cell ID returned by the server (#1222)
* Use ID as returned by the server

* Update CHANGELOG
2017-04-07 13:01:11 -07:00
Chris Goller f9b0b6fa0b Merge branch 'master' into feature/reverse-kapa 2017-04-05 20:05:25 -05:00
Chris Goller 46f4f43692 Update kapacitors rule's to use AST and kapacitor directly 2017-04-05 20:04:42 -05:00
Tim Raymond e1d2949b18 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
lukevmorris d2a8dec731 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
Andrew Watkins aa504b3640 Merge pull request #1029 from influxdata/feature/db-manager
Feature/db manager
2017-03-24 10:57:12 -07:00
Chris Goller 24f15e3036 FIx RP default to isDefault 2017-03-24 10:03:38 -07:00
Chris Goller b474b8650c Update RP JSON default to isDefault 2017-03-24 09:58:57 -07:00
Jared Scheib b90ff76670 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 af72d9b0e4

* 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
Jade McGough 05367492c6 Merge branch 'dbrp' into feature/db-manager 2017-03-23 11:24:40 -07:00
Jade McGough 3c014b2d05 updateRP 2017-03-23 06:13:41 -07:00
Jade McGough 1acf2bcb47 go format 2017-03-23 04:56:36 -07:00
Jade McGough e388a8b81e dropRP 2017-03-23 04:51:08 -07:00
Jade McGough 0023553e56 createRP 2017-03-23 04:27:53 -07:00
Jade McGough 3c666ac329 get retention policies 2017-03-23 03:06:59 -07:00
Jade McGough 6c418bb323 drop db API 2017-03-23 01:04:35 -07:00
Jade McGough 0b521f3a27 db creation seems to be working 2017-03-22 23:21:21 -07:00
Jade McGough 8954535734 WIP 2017-03-22 22:21:25 -07:00
Jade McGough 65a0612496 it's working! 2017-03-22 13:27:36 -07:00
Jade McGough b1c45e1dbc uuuugh 2017-03-22 04:01:55 -07:00
Jade McGough 1390179217 WIP ugh 2017-03-22 02:53:19 -07:00
Jade McGough e5fad520b7 WIP 2017-03-22 01:40:30 -07:00
Chris Goller a25a362360 Add ping and detection of influxdb source types 2017-03-13 16:45:05 -05:00
Chris Goller 49d8ece940 Add structured logging to underlying http server 2017-03-06 15:16:45 -06:00
Chris Goller 51c65f9111 Update InfluxEnterprise users to return their roles 2017-03-01 19:13:44 -06:00