Commit Graph

715 Commits (9d4162c60bde92a3849988ef3cbd293cf30c1c33)

Author SHA1 Message Date
Michael Desa 5f63e2738a Refactor data stores into a common interface 2017-10-31 16:41:17 -04:00
Michael Desa 6e0bfa67df Move organization resouces to their own package 2017-10-30 14:31:19 -04:00
Michael Desa 0a5da8a750 Use organization stores 2017-10-30 12:05:59 -04:00
Jared Scheib 1a06fefa04 Test authorized User in the context of Organization
Make principal explicit arg in auth tests.

Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-27 13:54:28 -07:00
Michael de Sa 10c63ee00c Add organization field to principal in auth tests
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-27 13:19:43 -07:00
Jared Scheib e0a535e78a Slightly DRYer code for getting fields off Principal
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-27 12:48:51 -07:00
Michael de Sa 511c3e1957 Test MeOrganization for valid org with invalid user, and invalid org
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-27 10:14:14 -07:00
Jared Scheib a956bacc41 Validate Organization and that User belongs to Org in MeOrganization
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-27 10:02:02 -07:00
Michael de Sa 093adb97c9 Test MeOrganization for setting and changing current org
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-26 16:03:01 -07:00
Michael de Sa 5c53fbbcc4 Change organization in meOrganizationRequest to currentOrganization
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-26 16:02:29 -07:00
Jared Scheib 7ffbf5dd98 Move Mock Authenticator into mocks package
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-26 15:46:06 -07:00
Chris Goller 832589f9b9 Fix logger and redirector to be flushers allowing HTTP chunking 2017-10-26 17:38:20 -05:00
Chris Goller 9e1fe7bf29 Fix kapacitor proxy to accept url query parameters 2017-10-26 17:38:03 -05:00
Chris Goller 2e869f5536 Add flush interval to kapacitor proxy to fix buffering 2017-10-26 17:37:28 -05:00
Jared Scheib 5bed2cfc4f Merge remote-tracking branch 'origin/multitenancy' into multitenancy_orgs
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-26 18:21:30 -04:00
Michael Desa bf6c77ee5f Provide route to change current users organization
Add current Organization to JWT.
Use OrganizationUsersStore to retrieve Users that are not me.

Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-26 18:06:52 -04:00
Nathan Haugo a1ea2c058e Merge pull request #2140 from influxdata/feature/kapa-insecure
Add insecure ssl support to connect to kapacitor
2017-10-26 10:40:28 -04:00
Jared Scheib 68e08b979f Update Organization comments on resources
Remove `omitempty` on Organization field

Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-25 14:56:08 -04:00
Jared Scheib fb19c4d291 Add Organization guard to server/kapacitors
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-25 14:48:19 -04:00
Michael Desa a6d565fd7c Add Organizations to Dashboards 2017-10-25 14:00:06 -04:00
Michael Desa eca0be45e2 Add Organization to layouts 2017-10-25 12:52:56 -04:00
Michael Desa 7b21a6b970 Add Organization to Sources 2017-10-25 11:51:15 -04:00
Jared Scheib c15a41025d Merge branch 'multitenancy' into multitenancy_lowercase_fields 2017-10-24 18:01:32 -07:00
Jared Scheib 7fce5fe0fc Merge branch 'master' into multitenancy 2017-10-24 17:58:15 -07:00
Jared Scheib 2f6643ae3c Add scheme to me/AuthorizedUser tests 2017-10-24 16:21:24 -07:00
Jared Scheib 9a6ab1bf9d Lowercase Provider & Scheme & Role values for consistency
The client was being sent lowercase values for Role & Provider,
but not Scheme. This change makes all the above lowercase.
2017-10-24 16:17:59 -07:00
Jared Scheib 30b8d3cdca Make all Store names plural for consistency 2017-10-24 15:54:24 -07:00
Michael de Sa d45335f281 Fix string interpolation data type for uint64 in Users tests
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-24 14:28:39 -07:00
Michael de Sa dad08a7389 Modify ValidUpdate to ensure only User Roles can be updated
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-24 14:28:35 -07:00
Nathan Haugo 1ce78dd21b Update changelog and version number for 1.3.10.0 2017-10-24 09:34:31 -04:00
Michael Desa d220fc3e5e Add tests for server/organizations.go 2017-10-23 14:16:52 -04:00
Michael Desa 61bda98403 Fix typo in organization comment 2017-10-23 14:16:31 -04:00
Michael Desa f1ad32a367 Add missing returns in http hanlder methods 2017-10-20 15:42:51 -04:00
Michael Desa 0842e8c479 Add CRUD routes for organizations 2017-10-20 15:42:34 -04:00
Chris Goller 4b12179b02 Add insecure ssl support to connect to kapacitor 2017-10-19 22:48:31 -05:00
Michael de Sa 4454d8c7b8 Add clarifying comment for InfluxDB UID being Name
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-19 14:42:34 -05:00
Michael de Sa c261ffadde Update route authorization by Role
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-19 14:33:08 -05:00
Jared Scheib c994e8c5ac 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 c1b56f241d Fix formating of server/auth.go 2017-10-19 12:54:06 -04:00
Michael Desa 34414df016 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 4687ecf794 Use new chonograf.UserStore Get method when needed
Refactor tests that were dependent of old implementation of UsersStore
2017-10-18 14:45:33 -04:00
Michael Desa 0d235f646d 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
Michael Desa e0f4ac74d1 Add comment to AuthorizedUser 2017-10-18 12:45:58 -04:00
Michael Desa fb6d91df9f Wrap routes with Authorization middleware 2017-10-18 12:40:17 -04:00
Michael Desa 28fac10baa Add AuthorizedUser middleware 2017-10-18 12:35:40 -04:00
Michael Desa f0f5bc071b Extract logic for getting user by name & provider 2017-10-18 12:34:23 -04:00
Michael de Sa b86164e710 Modify /me to match User via UsersStore.All & principal's Issuer
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-16 19:58:02 -05:00
Jared Scheib d27be61b8b Rename getEmail func & email var to getUsername & username
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-16 19:58:02 -05:00
Jared Scheib b85ba866ab Merge pull request #2113 from influxdata/multitenancy_rename_role_sourcerole
MULTITENANCY: Rename Role CRUD methods & structs w Source prefix
2017-10-16 19:51:38 -05:00
Jared Scheib 5d4ac3c167 Lowercase string consts for role names
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-16 19:42:57 -05:00
Michael de Sa 7a45bba4f7 Place user role consts and vars in server package
This also decouples the bolt tests from the server package.

Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-16 18:43:56 -05:00
Jared Scheib 8e298437c5 Replace string slices of role names with slices of chronograf.Role
This effectively reinstants rolly polly as king.

Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-16 18:26:08 -05:00
Michael de Sa 2f1e128c61 Suggest valid options in Invalid Role error message
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-16 15:56:43 -05:00
Michael de Sa d2f5706acb Add test coverage for userRequest validation
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-16 14:28:15 -05:00
Jared Scheib 351f762ed2 Remove unnecessary logic in ValidRoles guard
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-16 13:58:16 -05:00
Jared Scheib 2281adb33d Modify chronograf user roles to only use role name
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-16 14:44:34 -04:00
Jared Scheib 84be5f7128 Modify User req & res to receive & give Role names only
Role members are fully explicated for CRUD operations.
Also adds validation for Roles on requests.
Also returns an empty array in JSON when a User has no roles.
2017-10-16 14:18:34 -04:00
Chris Goller fd8e3b3398 Update swagger documentation about queryConfig 2017-10-16 11:51:51 -05:00
Chris Goller 14e49c0ef9 Rename queryConfig field to Value and support top/bottom 2017-10-16 10:56:12 -05:00
Jared Scheib 25faaa02df Add Roles to Users CRUD
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-12 17:42:30 -07:00
Jared Scheib 0d2715048d Rename Role CRUD methods & structs w Source prefix
Move server/roles.go and server/roles_test.go into server/sources.go and
server/sources_test.go respectively.

Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-12 19:25:33 -04:00
Michael Desa 6b9c1ed127 Add jsonEqual to test helpers file 2017-10-11 14:33:55 -04:00
Michael de Sa 04a9af37f3 Refactor setting writer Location header
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-11 10:14:57 -07:00
Chris Goller 7f3986f982 Refactor query config field arguments to be fields 2017-10-10 18:04:45 -05:00
Jared Scheib 40fac47b28 Rename vestigial receiver 'h' on Service to 's'
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-10 15:27:58 -07:00
Chris Goller 5f4ce64a11 Refactor queryConfig to have field aliases and function arguments 2017-10-10 17:01:50 -05:00
Jared Scheib e2ce0cda0d Refactor applying writer location header into helper func
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-10 14:40:45 -07:00
Michael de Sa 5a9772822e Move source_users & source_users_test code into sources.go & sources_test.go
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-10 14:32:41 -07:00
Michael de Sa 64381c28ba Remove omitempty for Provider & Scheme in userRequest and userResponse
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-10 14:25:45 -07:00
Michael de Sa 04f4c4b917 Use more idiomatic error message method
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-10 14:21:43 -07:00
Michael de Sa a122d5537c Add comments on ValidUpdate for future considerations
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-10 14:19:28 -07:00
Jared Scheib 1b250ebfa9 Make name on userResponse required
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-10 14:15:31 -07:00
Jared Scheib 35d6f0b8c3 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
Michael de Sa a1782cae64 Update only fields with diff; add test for that
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-10 11:40:33 -07:00
Michael de Sa 9f5f01bb3f Make User Update test reflect updated changes
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-10 11:36:13 -07:00
Michael de Sa d62f144e14 Use new-school sort.Slice
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-10 11:30:57 -07:00
Jared Scheib 004b0e20ef Add comments to exported functions
Signed-off-by: Michael de Sa <mjdesa@gmail.com>
2017-10-09 15:28:39 -07:00
Michael de Sa 990c4eee4d Return users in usersResponse in sorted order
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-09 15:19:46 -07:00
Michael de Sa 1a6b446bf8 Add All route & operation for Chronograf Users
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-10-09 15:03:50 -07:00
Jared Scheib 37183d871c 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 f23351c9ba Update version 2017-10-06 11:38:40 -07:00
Chris Goller 486a5bfb33 Update dashboard cells to have optional data source URI. 2017-10-02 12:50:42 -07:00
Andrew Watkins b66be556ed Update kapacitor links to include tasks and ping paths 2017-09-12 09:23:22 -07:00
Chris Goller a28d3d6466 Update kapacitor AlertRule to containe most Kapacitor Task information 2017-09-09 10:19:52 -05:00
Chris Goller 2128c13163 Update kapacitor rule response with dbrps, various dates, error, and executing. 2017-09-09 10:19:52 -05:00
Chris Goller b29a99a2c7 Update swagger docs with new kapacitor rule fields 2017-09-09 10:19:52 -05:00
Chris Goller 0c2e7f385b WIP 2017-09-09 10:19:52 -05:00
Nathan Haugo e89e8d137b Bump version to 1.3.8.0 2017-09-07 16:29:56 -07:00
Tim Raymond d559acc0e0
Refactor set membership validation
The pattern of using a select with a list of options and a default that
returns an error isn't bad for a one-off validation:

select myProp {
  case "validOption1", "validOption2":
    // no-op
  default:
    panic("invalid!")
}

However, we're doing this multiple times in this method, so it makes
sense to pull this out into a new method to make it clearer what's
happening.

This adds a `oneOf` function that takes some property and a variadic
list of valid options and reports whether or not that property is among
that list.
2017-08-24 15:45:51 -04:00
Tim Raymond e421bf83d4
Add validation around Base and Scale
The Base and Scale options on axes can only be one of two parameters. We
weren't validating that this was the case. This patch ensures that Base
can only ever be "10" or "2", and Scale must be either "linear" or
"log".

Associated test coverage was also added.
2017-08-24 15:37:19 -04:00
Tim Raymond 3b51cb8339
Update Swagger for new axes options
New options were introduced to control things like scale, base, etc. on
axes and these were previously not documented. This adds documentation
of the newly supported parameters by the API.
2017-08-24 14:50:12 -04:00
Nathan Haugo 8eb1e1b1a3 Merge 1.3.7.x 2017-08-23 16:01:30 -07:00
Nathan Haugo 16735c027f Bump to 1.3.7.0 2017-08-23 15:56:00 -07:00
Tim Raymond 2c4d02912d Merge branch 'master' into feature/tr-kapa-rule-pagination 2017-08-23 16:44:59 -04:00
Tim Raymond da55f96f9d
Remove kapacitor mock logic
This logic was originally left in place to help future test writers, but
its presence was vexing because it was not exercised in existing test
cases. It has been commented out should future tests need to leverage
it.
2017-08-23 16:39:12 -04:00
Timothy J. Raymond 50a05c7f6e 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 886046ed9a
Switch KapacitorRulesGet to use Pagination
Kapacitor responses are paginated, and sometimes users have more than
the default 100 tasks that are returned from Kapacitor. This replaces
the previous Kapa client with one that automatically follows paginated
responses from Kapacitor's ListTasks endpoint and returns the full
response.

Tests for the KapacitorRulesGet endpoint had to be updated because they
did not account for "limit" and "offset", and so led to an infinite
loop with the paginated client. A correct kapacitor backend will not
have this behavior
2017-08-15 17:30:29 -04:00
Tim Raymond d0be50ab37
Add PaginatingKapacitorClient
The kapacitor client used in the kapacitor endpoints is limited to
fetching whatever limit you provide it. If you provide no limit, it
defaults to a limit of 100. We use this default behavior currently.

Some users have more than 100 tasks, so we need a client that's capable
of continually fetching tasks from Kapacitor until there are none left,
and returning the full response to the frontend.

This introduces a PaginatingKapacitorClient which does exactly that.
Also, test coverage was added around the KapacitorRulesGet endpoint,
since it was previously untested.
2017-08-15 16:55:47 -04:00
Timothy J. Raymond 39f40671a9 Merge pull request #1866 from influxdata/bugfix/tr-missing-cell-type
Fix missing cell type
2017-08-14 14:04:36 -04:00
Tim Raymond 45e7bd8662
Fix missing cell type
Because we are now creating new instances of dashboards when we create a
response, it's critical to copy every element of Dashboards from the
previous to the new instance.

We were not previously copying the Type field of cells, so this was
defaulting to the empty string zero value. This patch adds "Type" to the
tests and ensures that it's properly copied
2017-08-14 13:41:31 -04:00
Jared Scheib 812de33be0 Add 'type' to new-sources server flag example 2017-08-11 11:54:16 -07:00
Tim Raymond 5c6c21adf7
Ensure "x", "y", and "y2" axes present
Similar to DashboardCells, this ensures that the "x", "y", and "y2" axes
are always present in a layout's cells.
2017-08-10 13:53:07 -07:00
Tim Raymond 12ea15d356
Add test coverage to /layouts endpoint
In anticipation of adding Axes to cells, I wanted some test coverage to
be in place before I made the change.

This covers the happy path case as well as focusing on individual
applications. To come are focusing on a measurement and a test for when
the store is unavailable.
2017-08-10 13:52:26 -07:00
Tim Raymond 63cddc96e4 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 89c0d84a8d
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 d08eab7214
Copy missing properties from Dashboards
When creating new dashboards to set defaults, not all properties of the
dashboard were being copied. This ensures that they are so that zero
values are not used for things like the ID and Name.
2017-07-31 17:24:43 -04:00
Tim Raymond 25059c0591
Fix data races in dashboard response construction
Dashboard responses had data races because multiple goroutines were
reading and modifying dashboards before sending them out on the wire.
This patch introduces immutability in the construction of the response,
so that each goroutine is working with its own set of dashboardResponse
structs.
2017-07-31 16:36:20 -04:00
Tim Raymond e5331dc536
Ensure cell bounds come back as empty array
The contract with the frontend states that bounds should come back as an
empty array instead of null when there are no bounds present. We must
explicitly specify []string{} for this to happen.
2017-07-31 16:36:16 -04:00
Tim Raymond 8bd622c491
Enforce presence of "x", "y", and "y2" axes
Certain aspects of the frontend requires the presence of these three
axes, so part of the contract established is that the backend will
always provide them. Since we centralize creation of
dashboardCellResponses, this is where these axes are added to all cell
responses.

Additionally, because there was previously no coverage over the
dashboard cells endpoints, a test has been added to cover the
DashboardCells method of Service.
2017-07-31 16:36:07 -04:00
Tim Raymond 0a042e2e0f
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
Chris Goller 6bc4cf36d1 Release 1.3.5.0 2017-07-25 15:08:02 -05:00
Chris Goller 9abbcf6dc0 Update influx Authorization Headers for write and query path 2017-07-25 12:13:46 -05:00
Tim Raymond 2684d73d07 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 bbcce5a6e5 Update Swagger with Cell Axes
Cells now have axes which represent their visualization's viewport. This
updates the Swagger documentation to reflect this.

Things to be aware of
=====================

The form of "axes" is that of a map<string,object>, which is represented
in Swagger by an "additionalProperties" key (search for "string to model
mapping" here: https://swagger.io/specification/).
2017-07-24 14:03:48 -04:00
Jared Scheib 918dff33b7 Merge pull request #1724 from influxdata/feature/pushover_support-1680
Add Pushover alert support
2017-07-21 14:04:22 -07:00
Jared Scheib c6204d6114 Clarify BoltPath server flag help text with default path 2017-07-21 11:41:54 -07:00
Tim Raymond ead7c103ba
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
Jared Scheib 1012dac41a Merge branch 'master' into feature/pushover_support-1680 2017-07-20 16:23:54 -07:00
Tim Raymond bab28c7271
Update Swagger with Cell Axes
Cells now have axes which represent their visualization's viewport. This
updates the Swagger documentation to reflect this.

Things to be aware of
=====================

The form of "axes" is that of a map<string,object>, which is represented
in Swagger by an "additionalProperties" key (search for "string to model
mapping" here: https://swagger.io/specification/).
2017-07-19 11:18:01 -04:00
Chris Goller c2adec4709 Add JWT shared secret influxdb auth
Refactor --new-sources to simplify adding shared secrets
2017-07-19 01:39:06 -05:00
Jared Scheib ce5decdf4b Add Pushover to swagger 2017-07-14 16:55:59 -07:00
Hunter Trujillo 44181d540e I think this goes here in the swagger doc... 2017-07-10 16:18:05 -06:00
Jared Scheib 7e8018782e Merge branch 'master' into feature/persist_datasource_flag-1555 2017-07-07 14:45:00 -07:00
Tim Raymond d9bfa23660 Fix bad merge conflict resolution
Duplicate definitions of the same property were present because of
confusing placement of merge conflict markers.
2017-07-07 16:59:19 -04:00
Tim Raymond 6be0cafd3a Merge master into feature/tr-auth0-organizations
Conflicts were the addition of CLI flags from a concurrent branch.
2017-07-07 16:18:01 -04:00
Jared Scheib 0855fc434b Add test for creating NewSources via server flag
Move TestLogger to mocks

Signed-off-by: Tim Raymond <tim@timraymond.com>
2017-07-07 12:56:12 -07:00
Jared Scheib 965d72ea3f Correct comment 2017-07-06 15:04:04 -07:00
Jared Scheib a8c816085e Refactor process new sources into named func 2017-07-06 14:27:14 -07:00
Jared Scheib 1c72fd338b Move NewSources input prep to server
Signed-off-by: Tim Raymond <tim@timraymond.com>
2017-07-06 14:12:07 -07:00
Jared Scheib 8707659688 Allow server to run even if NewSources errors out 2017-07-06 12:05:05 -07:00
Jared Scheib 3d6048be2e Update error messages to use plural 2017-07-06 11:48:14 -07:00
Jared Scheib 1ca0315f67 Add sample usage
Make flag identifier plural since JSON array of objects
2017-07-06 11:44:42 -07:00
Jared Scheib eb762dda86 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
Tim Raymond fc6e3f87ec Parse JSON for --new-source into struct
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-07-05 15:00:59 -07:00
Jared Scheib 6bc6324eb6 Add pseudocode outline for parsing and persisting source and server
Signed-off-by: Tim Raymond <tim@timraymond.com>
2017-06-29 15:33:22 -07:00
Jared Scheib 8fa81c9541 Group flags more semantically consistently 2017-06-29 14:27:30 -07:00
Jared Scheib 49eaccda81 Group flags more semantically consistently 2017-06-29 14:25:41 -07:00
Jared Scheib 079ca3c235 Improve description of custom link use, and give example (#1676) 2017-06-28 14:41:13 -07:00
Tim Raymond 734414c479 Support Organizations in Auth0
It's useful for operators to classify users into separate groups which
we have termed "organizations". For other OAuth providers, the notion of
an organization typically fell along company lines. For example,
MegaCorp might have a "MegaCorp" GitHub organiztion, and all email
addresses would have the domain "megacorp.com".

Auth0 is slightly different in that MegaCorp would likely run their own
Auth0 provider for their internal services, so "organizations" in Auth0
are no longer synonymous with "large organizations" (or companies).
Instead, Auth0 organizations could be used to restrict access to
Chronograf instances based on team membership within an organization.

To make use of Auth0 organizations, operators should modify users'
app_metadata to include the key "organization". Its value should be the
organization which that user belongs to. This can be done automatically
through arbitrary rules using Auth0 Rules.
2017-06-28 16:29:52 -04:00
Jared Scheib be1b7dfcdf Clarify error output for missing Name or URL 2017-06-27 13:40:26 -07:00
Jared Scheib 21fab035c2 Error out server if CustomLinks invalid on run
Signed-off-by: Chris Goller <goller@gmail.com>
2017-06-27 13:31:35 -07:00
Jared Scheib c637e5407d Refactor links_test to use table test and cleaner error check
Signed-off-by: Jared Scheib <jared.scheib@gmail.com>
2017-06-27 13:30:34 -07:00
Jared Scheib 2e93ad5230 Conserve memory allocation for customLinks slice
Signed-off-by: Chris Goller <goller@gmail.com>
2017-06-27 12:00:05 -07:00
Jared Scheib 3fea7501d8 Remove omitempty from CustomLink definition since should never b 2017-06-27 11:02:28 -07:00
Jared Scheib 48e90fcd0a Return and test for nil on invalid NewCustomLink input 2017-06-27 10:59:04 -07:00
Jared Scheib 578bf89c97 Pass through CustomLinks error message directly 2017-06-26 18:02:22 -05:00
Jared Scheib 604faea32d Add full test coverage for NewCustomLinks 2017-06-26 17:18:53 -05:00
Jared Scheib ca239d037d Move external links structs to links.go 2017-06-26 16:13:23 -05:00
Jared Scheib 81ada5315c Only test one CustomLink to avoid map key order failing test 2017-06-26 16:12:54 -05:00
Jared Scheib 6e59d8ce34 Add custom links to routes test 2017-06-26 16:00:27 -05:00
Jared Scheib a723ef8ae1 Use appropriate error when NewCustomLinks fails 2017-06-26 15:44:56 -05:00
Jared Scheib 6dedf77add Comment CustomLink struct 2017-06-26 15:43:03 -05:00
Jared Scheib ede2476837 Change 'Url' prop key to 'URL' to satisfy Go convention 2017-06-26 15:42:36 -05:00
Jared Scheib 799dc64ea4 Update comment for ServeHTTP to mention External Links 2017-06-26 15:35:42 -05:00
Jared Scheib 90aaa8104d Refactor CustomLinks transform into routes.go and new links.go
Rename generateCustomLinks to NewCustomLinks
Handle error from NewCustomLinks per app convention
2017-06-26 15:30:33 -05:00
Jared Scheib 1b3c00d07a Add 'custom' prop and example to /chronograf/v1 in swagger docs 2017-06-26 11:56:05 -07:00
Jared Scheib 7d6eaf925a Generate custom links from env var and multiple CLI flags
Signed-off-by: Chris Goller <goller@gmail.com>
2017-06-26 11:48:47 -07:00
Jared Scheib 613dcc64ac WIP Parse custom links from CLI 2017-06-23 15:12:02 -07:00
Tim Raymond 07a3dceb2f Add Auth0 to supported OAuth2 providers
Auth0 is an OpenID Connect compliant OAuth2 provider, so we're able to
re-use the generic OAuth2 provider to implement it. The routes required
by Auth0 have been hardcoded for user convenience.

Also, Auth0 requires users to register a subdomain of auth0.com when
signing up. This must be provided to chronograf through the
`--auth0-domain` parameter (or `AUTH0_DOMAIN` ENV). This is **distinct**
from the `PUBLIC_URL`. For example, for a Chronograf hosted at
`http://www.example.com`, and an Auth0 domain of
`http://oceanic-airlines.auth0.com`, a client-id of `notpennysboat` and a
client-secret of `4-8-15-16-23-42`, the command line options would look
like:

```
chronograf \
  --auth0-domain=http://oceanic-airlines.auth0.com \
  --auth0-client-id=notpennysboat \
  --auth0-secret=4-8-15-16-23-24
  --public-url=http://www.example.com
  -t `uuidgen`
```
2017-06-21 10:20:46 -04:00
Timothy J. Raymond 21c3f78fe3 Merge pull request #1619 from pragkent/generic-oauth-redirect-url
Add redirect url to generic oauth
2017-06-21 10:19:03 -04:00
Kent Wang fdcbd6badc Fix generic redirect URL 2017-06-21 12:19:21 +08:00
Kent Wang 55093d720d Replace string concat to path.Join 2017-06-18 10:47:02 +08:00
Kent Wang 25958a017e Don't pass RedirectURL if PublicURL not set 2017-06-18 10:40:07 +08:00
Jared Scheib 2f4695fa0b Merge branch 'master' into feature/status_page-1556 2017-06-16 17:52:16 -07:00
Jared Scheib 06dd8a7a3d Update default JSON feed URL to final, secure link 2017-06-16 14:23:46 -07:00
Kent Wang b4627983b9 Add redirect url to generic oauth 2017-06-16 17:35:57 +08:00
Jared Scheib 2ff86cf15e Update swagger docs for external and statusFeed props 2017-06-15 18:23:42 -07:00
Jared Scheib c8c3f6108c Comment new StatusFeed member of AllRoutes 2017-06-15 17:55:46 -07:00
Jared Scheib 7e359239e5 Refactor statusFeedURL to be set in CLI 'default'
Reverts to a clean separation of concerns between mux.go vs AllRoutes
AllRoutes now expects a StatusFeed url directly
2017-06-15 13:51:22 -07:00
Jared Scheib 2c5e7ef0d6 Add test for all routes with ExternalLinks 2017-06-14 16:22:30 -07:00
Jared Scheib f4ea8fc7b5 Remove unused fragment 2017-06-14 13:51:08 -07:00
Tim Raymond c5872bba41 correct TemplateVar collection type in Queries 2017-06-14 10:52:29 -04:00
Jared Scheib 8af550fa6f Add default InfluxData JSON feed url 2017-06-13 19:23:52 -07:00
Jared Scheib 25bde527a6 Add status-feed-url build flag within new externalLinks prop in AllRoutes 2017-06-13 13:40:20 -07:00
Tim Raymond 45402f476d 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
Hunter Trujillo 816a8b9226 Update swagger docs. 2017-06-12 15:30:10 -06:00
Regan Kuchan 6da83b8629 Update version and changelog for v1.3.2.0 2017-06-02 13:34:23 -06:00
Jared Scheib 6806f62ac0 Refactor /chronograf/v1 to not return logoutLink if not using auth
Use logoutLink to determine if logout menu item is shown

Signed-off-by: Chris Goller <güllère@gmail.com>
2017-05-30 17:34:55 -07:00
Chris Goller 7122c6a19d Add kapacitor rule validation on update 2017-05-25 12:10:25 -05:00
Chris Goller 8d8ffd2bf5 Fix kapacitor PUT/POST returning request rather than response 2017-05-24 15:30:45 -07:00
Regan Kuchan 5848660f97 Update version number and bumpversion 2017-05-22 11:57:23 -07:00
Tim Raymond b7bb23720f Fix infinite spinner with /chronograf basepath
When using a basepath of /chronograf, the app would present a
never-ending spinner when visiting the root route. This was because the
prefixingRedirector middleware which is responsible for appending the
basepath to redirects from downstream http.Handlers thought that the
prefix was already appended since it saw `/chronograf/v1`. In reality,
it should have produced a location like `/chronograf/chronograf/v1`.

The solution was to look beyond the first instance of a prefix and check
for the presence of another prefix to detect if a prefix was already
applied by a downstream handler.
2017-05-09 12:12:42 -07:00
Chris Goller 99099e8a5c Update version to 1.3 for javascript and swagger 2017-05-09 08:24:04 -07:00
Tim Raymond 24160ed6ef Force prefixing in several locations
The Basepath option should be applied in anything that will be consumed
by the React application. This is because from its perspective, the
proxy sitting between it and the backend wants those prefixes regardless
of what it does with them before handing the request back to the
Chronograf backend. Consequently, there's situations in the backend
where we need to have the `opts.Basepath` or the `basepath` that we
alter when `opts.PrefixRoutes` is set. The `basepath` is strictly for
altering routing decisions made by the backend.

There's subtle places where routes are supplied to the frontend that
need to always have the `opts.Basepath` set as well. Another commit
addressed the "Location" header of Redirects, for example.
2017-05-08 14:40:50 -07:00
Tim Raymond 5cf21f6cbd Add PrefixedRedirect function
The router that we use has a feature that will automatically redirect
routes in certain situations where it feels a trailing slash would be
appropriate. Because the underlying router is totally unaware of
upstream prefixing activity, the "Location" that it sends clients to is
incorrect because it doesn't have the prefix.

This introduces a middleware that catches any downstream 3XX class
responses and replaces the Location header with the prefixed version of
it, plus a trailing slash. It does this only when the prefix has not
been applied already by some downstream middleware.
2017-05-08 14:40:50 -07:00
Tim Raymond ccf7964e78 Add HTTP status code to logs
This adds the status code to the response log message to make it easier
to diagnose issues. It also replaces the placeholder "Success" message
with the decoded value of the HTTP Status, resulting in messages like:

INFO[0041] Response: Temporary Redirect                  code=307

...and so on. Both easily consumable by humans and machines.
2017-05-08 14:40:50 -07:00
Tim Raymond 33e5eb0e30 Use Basepath over string concatenation
Basepath was previously not working here because the strings constructed
via concatenation had a trailing slash at the end:

Before:
  rootPath => "/someprefix/chronograf/v1/"

After:
  rootPath => "/someprefix/chronograf/v1"

The julienschmidt/httprouter that the bouk/httprouter is based on has
support for ignoring trailing slashes, which is behavior that we want.
However, routing decisions involving this rootPath string were being
made by a `strings.HasPrefix` function. This conditional seeks to
apply the token middleware only in cases where routes _under_
`/chronograf/v1` are accessed (e.g. `/chronograf/v1/sources`). In cases
where the paths were effectively equal, this conditional accidentally
worked because the string `/chronograf/v1` does not have the prefix
`/chronograf/v1/`. When this was corrected to use `path.Join`, this case
became true and caused the token middleware to be applied.

`path.Join` is the correct way to construct paths, since this prevents
issues where a fragment like `/foo/` is concatenated with a fragment
like `/bar/quux/` to yield the string `/foo//bar/quux/`.

Given that continuing to use concatenation is no longer an option, the
solution is to compare the lengths of the strings to ensure that the
path under comparison is longer than the prefix it's being tested
against. This guarantees that the subject path is a route underneath the
`/chronograf/v1` route.
2017-05-08 14:40:50 -07:00
Tim Raymond 5897e62928 Remove broken path.Join logic
It is entirely unclear why this doesn't work.
2017-05-08 14:40:50 -07:00
Tim Raymond & Jared Scheib 337c7b16a5 Fix OAuth when using Basepath
Updated the logout link in the UI to use a link provided by the
/chronograf/v1/ endpoint. We also replaced many instances of string
concatenation of URL paths with path.Join, which better handles cases
where prefixed and suffixed "/" characters may be present in provided
basepaths. We also refactored how Basepath was being prefixed when using
Auth. Documentation was also updated to warn users that basepaths should
be applied to the OAuth callback link when configuring OAuth with their
provider.
2017-05-08 14:40:50 -07:00
Tim Raymond 7a9ca4a397 Add logging of response times
This makes monitoring Chronograf 👍
2017-05-08 14:40:50 -07:00
Jared Scheib 9c7fb0904b Notify user about --prefix-routes when using --basepath 2017-05-08 14:40:50 -07:00
Chris Goller d16286c505 Fix null queryConfig and add substantial test coverage to kapacitor
storage
2017-05-05 16:14:02 -05:00
Chris Goller 8aaed06402 Update Kapacitor alerts to set queryConfig to null if not parsable. 2017-05-05 14:30:20 -05:00
Andrew Watkins 014103adf6 Resolve conflicts
Conflicts:
	ui/src/utils/influxql.js
2017-05-05 10:01:26 -07:00
Chris Goller ce6229168d Merge branch 'master' into feature/influx-write 2017-05-05 08:10:14 -05:00
Chris Goller 94fd7ef164 Update influxql AST parsing to return full binary exprs (#1380) 2017-05-03 15:57:19 -07:00
Chris Goller 86575b2cde Add line-protocol /write endpoint to all data sources 2017-05-03 00:06:40 -05:00
Chris Goller 6ee108d5b7 Update swagger.json to mention queryConfig's range 2017-05-02 15:20:06 -05:00
Chris Goller e6aab20617 Add Range.Lower and Range.Upper to query config to persist custom ranges 2017-05-02 15:08:51 -05:00
Chris Goller b48448fdef Update /queries endpoint to handle templates 2017-04-28 15:12:28 -05:00
Luke Morris 9a198bb5dc Remove unused dependencies from dashboard_test.go 2017-04-28 12:57:16 -07:00
Hunter Trujillo 0d1c416c98 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
Jade McGough 50914024ea make kapacitor patching work 2017-04-21 12:42:35 -07:00
Jade McGough 87af3b44a4 persist the currently active kapacitor in boltdb 2017-04-21 12:42:35 -07:00
Jade McGough 7a5457644a WIP 2017-04-21 12:39:41 -07:00
Jade McGough 17ff852d94 add kapacitors to AllRoutes 2017-04-21 12:39:41 -07:00
Jade McGough 2a0dee6536 clean up kapacitor swagger docs 2017-04-21 12:39:40 -07:00
Chris Goller 3ca35dc721 Remove extra debug info in the dashboard testing 2017-04-20 16:31:00 -05:00
Chris Goller fee966da28 Add measurements and databases to template variables 2017-04-20 14:32:02 -05:00
Chris Goller b38ee73c6b Update templates API response 2017-04-20 12:22:55 -05:00
Chris Goller abc5ad0b17 Add more validation checks to dashboard updates 2017-04-20 11:47:31 -05:00
Chris Goller e44f716543 Add initial template CRUD operations 2017-04-20 11:09:56 -05:00
Chris Goller ac0ba1334e Move dashboard cells into cells.go 2017-04-20 09:24:57 -05:00
Chris Goller 9075c0da83 Add swagger documentation for template variables 2017-04-19 12:09:22 -05:00
Chris Goller 76fdbc9d55 Merge branch 'master' into feature/refreshing-jwts 2017-04-17 15:24:10 -05:00
Chris Goller 3c6f0db623 Update oauth2 Authenticator signatures to use extend 2017-04-17 11:49:45 -05:00
Chris Goller 017b01d384 Update tests for refreshing jwts 2017-04-14 02:35:30 -05:00
Chris Goller 7c048e8135 Add JWT refresh on validation.
JWTs will only life five minutes into the future.  Any time
the server receives an authenicated request, the JWT's expire at
will be extended into the future.
2017-04-14 02:12:52 -05:00
Andrew Watkins 99a36cb586 Add default RP to queryConfig when no RP is present
This will only happen if the qC is fully qualified.  A fully
qualified query is one that has a db, measurement, and field.
2017-04-13 17:49:53 -07:00
Andrew Watkins 4ef7ff2dc5 Merge pull request #1232 from influxdata/feature/voltron-the-builder
Voltron the builder / One Builder to Rule Them All / Make Builder Great Again
2017-04-13 09:49:45 -07:00
Chris Goller d643907a6e Merge branch 'master' into feature/reverse-kapa 2017-04-11 12:52:49 -05:00
Fred Cox 183a0e0f28 Fix env var name for Google client secret 2017-04-11 16:48:35 +03:00
Hunter Trujillo fd672f0f05 Use backend IDs for great justice. 2017-04-10 12:02:09 -06:00
Chris Goller 65231c2409 Update rawtext in queryconfig to be null and not omitempty 2017-04-07 17:32:10 -05:00
Chris Goller 84e9e0018a Update queries endpoint to return InfluxQL, queryConfig, queryAST 2017-04-07 16:58:56 -05:00
Chris Goller 8d5dcc3ec7 Fix JSON typos in swagger.json 2017-04-07 16:35:05 -05:00
Chris Goller 2f01e567c4 Merge branch 'master' into feature/structured-queries
Conflicts:
	Godeps
	LICENSE_OF_DEPENDENCIES.md
	server/mux.go
	server/routes.go
	ui/.eslintrc
2017-04-07 16:06:24 -05:00
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
Chris Goller 6b33738f75 Remove debugging log 2017-04-05 23:18:40 -05:00
Chris Goller 21c1c90ca3 Merge branch 'master' into feature/reverse-kapa 2017-04-05 20:05:25 -05:00
Chris Goller e83d95b937 Update kapacitors rule's to use AST and kapacitor directly 2017-04-05 20:04:42 -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
Jade McGough 19729da202 cleanup 2017-03-22 11:29:38 -07:00
Jade McGough cea9d9a8dc uuuugh 2017-03-22 04:01:55 -07:00
Jade McGough 056abde56d WIP 2017-03-22 01:40:30 -07:00
Jade McGough 36ffe0c436 dbs GET returns list of databases 2017-03-21 12:59:27 -07:00
Jade McGough e1ccda806c WIP db endpoint 2017-03-20 15:26:48 -07:00
Jade McGough b443d857ca add db and rp routes to mux.go 2017-03-20 14:23:29 -07:00
Jade McGough 4ac8d72902 link to retention policies in db response 2017-03-20 11:58:09 -07:00
Jade McGough 626b313d98 add links to retentionpolicy swagger 2017-03-20 11:52:49 -07:00
Jade McGough 5859beb603 add links to database swagger object 2017-03-20 11:48:25 -07:00
Chris Goller 02c85cd2a0 Fix reporting stats to update uptime 2017-03-17 09:59:52 -05:00
Jade McGough b9e101c831 add example for retention policy 2017-03-14 16:53:41 -07:00
Jade McGough 310f7dc7c5 fix swagger errors, add tags 2017-03-14 16:44:44 -07:00
Jade McGough 141c93bc5f db rp server endpoint objects 2017-03-14 16:05:13 -07:00
Jade McGough 460f23c0c0 first whack at db rp server endpoints 2017-03-14 15:31:57 -07:00
Jade McGough be2860af7d db rp documentation WIP 2017-03-14 14:01:28 -07:00
Andrew Watkins 81f5ca9ebb Make name not required 2017-03-13 15:15:01 -07:00
Chris Goller 01588e0e08 Add ping and detection of influxdb source types 2017-03-13 16:45:05 -05:00
Chris Goller a12fb32a2e Update user's roles validation 2017-03-10 18:06:06 -06:00
Chris Goller 9bd8a95e2a Update roles to check if role already exists 2017-03-10 17:24:52 -06:00
Chris Goller 2652a3aeb0 Add ability to update roles on a user resource 2017-03-10 16:52:24 -06:00