Commit Graph

2871 Commits

Author SHA1 Message Date
Tirumarai Selvan
692e374c94 tag release v2.0.0-alpha.4
GitOrigin-RevId: fdde115ba4442795494566f2d6a2aacbf50f0632
2021-03-10 11:48:44 +00:00
Vijay Prasanna
89e26d3e9f console: add inherited roles tab
Co-authored-by: Abhijeet Singh Khangarot <26903230+abhi40308@users.noreply.github.com>
Co-authored-by: Aleksandra Sikora <9019397+beerose@users.noreply.github.com>
GitOrigin-RevId: b6edc26b96e2cd0db11e7951b7941a631932d125
2021-03-10 10:45:18 +00:00
Anon Ray
d16bc4fe46 server: fix handling of nullable object relationships
GitOrigin-RevId: 3214e77ed06a07b6c1293d59daa088649a881e78
2021-03-10 08:56:03 +00:00
Rakesh Emmadi
2b0c990d50 server: remove Action.hs-boot file
GitOrigin-RevId: 65267a7b6343a12b690f7710785fdfa30873e479
2021-03-10 07:27:19 +00:00
Lyndon Maydwell
0c1016e065 Inconsistent metadata support for REST endpoints
Previously invalid REST endpoints would throw errors during schema cache build.

This PR changes the validation to instead add to the inconsistent metadata objects in order to allow use of `allow_inconsistent_metadata` with inconsistent REST endpoints.

All non-fatal endpoint definition errors are returned as inconsistent metadata warnings/errors depending on the use of `allow_inconsistent_metadata`. The endpoints with issues are then created and return informational runtime errors when they are called.

Console impact when creating endpoints is that error messages now refer to metadata inconsistencies rather than REST feature at the top level:

![image](https://user-images.githubusercontent.com/92299/109911843-ede9ec00-7cfe-11eb-9c55-7cf924d662a6.png)

<img width="969" alt="image" src="https://user-images.githubusercontent.com/92299/110258597-8336fa00-7ff7-11eb-872c-bfca945aa0e8.png">

Note: Conflicting endpoints generate one error per conflicting set of endpoints due to the implementation of `groupInconsistentMetadataById` and `imObjectIds`. This is done to ensure that error messages are terse, but may pose errors if there are some assumptions made surrounding `imObjectIds`.

Related to https://github.com/hasura/graphql-engine-mono/pull/473 (Allow Inconsistent Metadata (v2) #473 (Merged))

---

### Kodiak commit message

Changes the validation to use inconsistent metadata objects for REST endpoint issues.

#### Commit title

Inconsistent metadata for REST endpoints

GitOrigin-RevId: b9de971208e9bb0a319c57df8dace44cb115ff66
2021-03-10 05:26:10 +00:00
Sameer Kolhar
eccefff925 console: permissions support for sql server
Co-authored-by: Aleksandra Sikora <9019397+beerose@users.noreply.github.com>
GitOrigin-RevId: 1dce9fff909ccf34e904c785116462ce16b8c44b
2021-03-10 03:51:03 +00:00
Rikin Kachhia
ff8867c7b6 docs: add workaround to change region for cloud v2.0 projects
GitOrigin-RevId: deb7db4d70793b3ca3b7df222909ca1c2db8003d
2021-03-09 21:28:34 +00:00
Aravind K P
4abc2061fe cli: support inherited roles in metadata
GitOrigin-RevId: f70f199e8ef5c9b859250673bcb7de766400748c
2021-03-09 20:21:03 +00:00
Karthikeyan Chinnakonda
71beba0c54 server: add experimental features in the alpha config API
GitOrigin-RevId: b4841e3dbea8340f8fad638359f3b1cb28188db6
2021-03-09 18:46:42 +00:00
hasura-bot
7e69d3628d docs: add seeds documentation to the CLI config reference
GITHUB_PR_NUMBER: 6323
GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/6323

Co-authored-by: Todd Heslin <1883112+toddheslin@users.noreply.github.com>
GitOrigin-RevId: e47d0c62b06e4f4782378318fcfa368406f20096
2021-03-09 16:33:15 +00:00
Naveen Naidu
266f7315a2 docs: Add metadata db link in index of server configuration use case
GitOrigin-RevId: 1c2c4c7c65c6e01ddbec7e589d8644bdb5e856ed
2021-03-09 13:30:33 +00:00
hasura-bot
35168876ec docs: add permissions to config v2 metadata format
GITHUB_PR_NUMBER: 6314
GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/6314

Co-authored-by: Funmilayo E. Olaiya <35759534+codeliezel@users.noreply.github.com>
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: 43722c20992a4ef0520ee69f3138a97e988f8412
2021-03-09 11:59:20 +00:00
Jigyasu Arya
36a6c36f6d docs: update cloud project collaborators screenshots
GitOrigin-RevId: 8acfe781d27d09d688a293d09fe624c0499c8417
2021-03-09 10:13:46 +00:00
Karthikeyan Chinnakonda
0a7d634326 server: fix issue when remote relationship col has a custom GQL name
GitOrigin-RevId: ca45383020d0e8f80afb445ab8bb240cc1505ea9
2021-03-09 09:25:29 +00:00
Praveen Durairaju
3ad42ed540 docs: add webinar links
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: d5b680ce50bfa331bbead32ffe8ad7ba95a6b51f
2021-03-09 08:37:34 +00:00
Aravind K P
ae92ac4941 cli: rename flag --database to --database-name
GitOrigin-RevId: 37fb8dd4f82c2b68f87013e5ec87d5b2dab8853f
2021-03-09 06:44:37 +00:00
Aravind K P
d18e172662 cli: allow relative paths in !include directives
GitOrigin-RevId: c4928e8a1e8918b1a24774ccafbcc5839574f5d7
2021-03-09 05:57:45 +00:00
Rikin Kachhia
8357142001 docs: add v2.0 upgrade related docs
- add [page](https://deploy-preview-814--hasura-docs-mono.netlify.app/graphql/core/databases/connect-db.html) on connecting databases
- add [page](https://deploy-preview-814--hasura-docs-mono.netlify.app/graphql/cloud/projects/move-project-v2.html) to move 1.3 cloud projects to 2.0
- add [section](https://deploy-preview-814--hasura-docs-mono.netlify.app/graphql/core/migrations/upgrade-v3.html#continue-using-config-v2) on continue using config v2 with v2.0 projects

GitOrigin-RevId: 5353466425f1c33d987037b739213a30e87e0efa
2021-03-08 15:43:35 +00:00
Aravind K P
f6ca551df4 cli: support mssql sources
GitOrigin-RevId: 4b1a63c8dc342ae4001b16c4b1dce282092d5c6f
2021-03-08 12:00:34 +00:00
Karthikeyan Chinnakonda
92026b769f [Preview] Inherited roles for postgres read queries
fixes #3868

docker image - `hasura/graphql-engine:inherited-roles-preview-48b73a2de`

Note:

To be able to use the inherited roles feature, the graphql-engine should be started with the env variable `HASURA_GRAPHQL_EXPERIMENTAL_FEATURES` set to `inherited_roles`.

Introduction
------------

This PR implements the idea of multiple roles as presented in this [paper](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/FGALanguageICDE07.pdf). The multiple roles feature in this PR can be used via inherited roles. An inherited role is a role which can be created by combining multiple singular roles. For example, if there are two roles `author` and `editor` configured in the graphql-engine, then we can create a inherited role with the name of `combined_author_editor` role which will combine the select permissions of the `author` and `editor` roles and then make GraphQL queries using the `combined_author_editor`.

How are select permissions of different roles are combined?
------------------------------------------------------------

A select permission includes 5 things:

1. Columns accessible to the role
2. Row selection filter
3. Limit
4. Allow aggregation
5. Scalar computed fields accessible to the role

 Suppose there are two roles, `role1` gives access to the `address` column with row filter `P1` and `role2` gives access to both the `address` and the `phone` column with row filter `P2` and we create a new role `combined_roles` which combines `role1` and `role2`.

Let's say the following GraphQL query is queried with the `combined_roles` role.

```graphql
query {
   employees {
     address
     phone
   }
}
```

This will translate to the following SQL query:

```sql

 select
    (case when (P1 or P2) then address else null end) as address,
    (case when P2 then phone else null end) as phone
 from employee
 where (P1 or P2)
```

The other parameters of the select permission will be combined in the following manner:

1. Limit - Minimum of the limits will be the limit of the inherited role
2. Allow aggregations - If any of the role allows aggregation, then the inherited role will allow aggregation
3. Scalar computed fields - same as table column fields, as in the above example

APIs for inherited roles:
----------------------

1. `add_inherited_role`

`add_inherited_role` is the [metadata API](https://hasura.io/docs/1.0/graphql/core/api-reference/index.html#schema-metadata-api) to create a new inherited role. It accepts two arguments

`role_name`: the name of the inherited role to be added (String)
`role_set`: list of roles that need to be combined (Array of Strings)

Example:

```json
{
  "type": "add_inherited_role",
  "args": {
      "role_name":"combined_user",
      "role_set":[
          "user",
          "user1"
      ]
  }
}
```

After adding the inherited role, the inherited role can be used like single roles like earlier

Note:

An inherited role can only be created with non-inherited/singular roles.

2. `drop_inherited_role`

The `drop_inherited_role` API accepts the name of the inherited role and drops it from the metadata. It accepts a single argument:

`role_name`: name of the inherited role to be dropped

Example:

```json

{
  "type": "drop_inherited_role",
  "args": {
      "role_name":"combined_user"
  }
}
```

Metadata
---------

The derived roles metadata will be included under the `experimental_features` key while exporting the metadata.

```json
{
  "experimental_features": {
    "derived_roles": [
      {
        "role_name": "manager_is_employee_too",
        "role_set": [
          "employee",
          "manager"
        ]
      }
    ]
  }
}
```

Scope
------

Only postgres queries and subscriptions are supported in this PR.

Important points:
-----------------

1. All columns exposed to an inherited role will be marked as `nullable`, this is done so that cell value nullification can be done.

TODOs
-------

- [ ] Tests
   - [ ] Test a GraphQL query running with a inherited role without enabling inherited roles in experimental features
   - [] Tests for aggregate queries, limit, computed fields, functions, subscriptions (?)
   - [ ] Introspection test with a inherited role (nullability changes in a inherited role)
- [ ] Docs
- [ ] Changelog

Co-authored-by: Vamshi Surabhi <6562944+0x777@users.noreply.github.com>
GitOrigin-RevId: 3b8ee1e11f5ceca80fe294f8c074d42fbccfec63
2021-03-08 11:15:10 +00:00
Kali Vara Purushotham Santhati
34b611ae43 cli: fix extension of generated seeds file
close https://github.com/hasura/graphql-engine/issues/6422

GitOrigin-RevId: 2cbf4a64598e7ef8866cedb46686a8ec4642a63d
2021-03-08 08:30:17 +00:00
Aravind K P
3bfa6834a8 cli: add precondition checks for config v3 update command
GitOrigin-RevId: 62f786ea8fc8d14deb0e78bbbdc2467b7a4e0e9e
2021-03-08 06:58:49 +00:00
Naveen Naidu
f55df228fe Server: Add Event Trigger Metrics
- [x] **Event Triggers Metrics**
  - [x] Distribution of size of event trigger fetches / Number of events fetched in the last `event trigger fetch`
  - [x] Event Triggers: Number of event trigger HTTP workers in process
  - [x]  Event Triggers: Avg event trigger lock time (if an event has been fetched but not processed because http worker is not free)

#### Sample response
The metrics can be viewed from the `/dev/ekg` endpoint

```json
{
"num_events_fetched":{
      "max":0,
      "mean":0,
      "count":1,
      "min":0,
      "variance":null,
      "type":"d",
      "sum":0
   },
 "num_event_trigger_http_workers":{
      "type":"g",
      "val":0
   },
"event_lock_time":{
      "max":0,
      "mean":0,
      "count":0,
      "min":0,
      "variance":0,
      "type":"d",
      "sum":0
   },
```

#### Todo
- [ ]  Group similar metrics together (Eg: Group all the metrics related to Event trigger, How do we do it??)

Closes: https://github.com/hasura/graphql-engine-mono/issues/202
GitOrigin-RevId: bada11d871272b04c8a09d006d9d037a8464a472
2021-03-07 05:25:24 +00:00
Antoine Leblanc
5a1f71b3bc server/mssql: fix parsing of text column values
GitOrigin-RevId: c4692cdc254af074f70cdceb78c7dc6211e7e084
2021-03-05 18:33:16 +00:00
Kali Vara Purushotham Santhati
6d04f587b4 cli: follow symlinks in migrations directory
GitOrigin-RevId: 66840f2b087be3c7660115c5e7158574997f0292
2021-03-05 17:14:17 +00:00
Aravind K P
0f307fd0a4 docs: add pre update checklist for config v3 update
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: f97c38530ad608372d7e6f7fef4045e08e3b7acb
2021-03-05 16:29:56 +00:00
Sameer Kolhar
78785ae513 server: fix fromJSON for RemoteSchemaPermsCtx
GitOrigin-RevId: a0a6d50a39ffbc7fab0a303b50c3e2c485954773
2021-03-05 13:26:57 +00:00
Kali Vara Purushotham Santhati
f998fc089e cli: add API docs
Co-authored-by: Aravind K P <8335904+scriptonist@users.noreply.github.com>
GitOrigin-RevId: 1cbcba2d458d82814703682c63b1f0f7bf6226bc
2021-03-05 11:57:55 +00:00
Rakesh Emmadi
edf5a0661e server: support mssql views
GitOrigin-RevId: 50e2fc1d64a67a9284ae62d2401ca6f9627ebdab
2021-03-05 10:53:38 +00:00
Sameer Kolhar
642c950827 server: fix ToJSON instance of RemoteSchemaPermsCtx
GitOrigin-RevId: 7e8ffa747bb645ce6b606ef38a16120f420832bf
2021-03-05 07:47:00 +00:00
Aravind K P
c8e08e2804 cli: support rest endpoints
GitOrigin-RevId: cd32497fb751489d9b17e91e30e18772f7fa07ec
2021-03-05 03:22:59 +00:00
Rikin Kachhia
fa90e9d004 docs: update feature version support notes
GitOrigin-RevId: 4627c876b2771c84602f4bfaa1ab0646b2650f12
2021-03-04 19:21:21 +00:00
Sameer Kolhar
ee56b741d8 server: add is_remote_schema_permissions_enabled to config API
GitOrigin-RevId: 7129d0fba25edc2450c74140335df9398154ce52
2021-03-04 16:22:31 +00:00
Tirumarai Selvan
d1d8cc0a40 tag release v2.0.0-alpha.3 (#790)
GitOrigin-RevId: 7b61e8190d07ebe45ff96ee5209992dfc3c53b93
2021-03-04 14:30:32 +00:00
Vishnu Bharathi
0c8dce35e4 ci: avoids doing backport release commit
GitOrigin-RevId: 5aa89862f0427bdc3ab1aa84ba8041286786fcb0
2021-03-04 12:45:08 +00:00
Lyndon Maydwell
cb85d62078 docs: add info on variable interpretation for primitive URL variables
Additional documentation for REST queries with respect to how url template variables and query variables are interpreted.

* Route variables and Query parameters are interpreted as scalars according to the variables types in the associated query and passed as JSON data through the query variables:
   * Missing nullable variables are interpreted as NULL
   * Boolean variables are interpreted as Bools
   * Boolean flags without values e.g. ``/api/rest/myquery?mybool`` are interpreted as True for boolean variables
   * String variables are interpreted as literal Strings
   * UUID variables are interpreted as strings
   * ID variables are interpreted as strings
   * Number, Int, Float, and Double variables are interpreted as Numbers
   * All other types or mismatches currently report variable type errors

---

### Kodiak commit message

Documentation for variable interpretation for primitive URL variables

#### Commit title
Documentation for variable interpretation for primitive URL variables

Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: 2d90facd0e644e275fe752dc393f066fb71490c5
2021-03-04 10:38:51 +00:00
Karthikeyan Chinnakonda
f2199c4174 fix the changelog of static console assets fix (#771)
GitOrigin-RevId: 9516a41c3f615b1ef5264a7c902adf153ae85c00
2021-03-04 06:50:35 +00:00
hasura-bot
da3c9f2c53 minor typo fixes (#165)
Co-authored-by: Colby Thomas <coloradocolby@gmail.com>
GITHUB_PR_NUMBER: 6311
GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/6311

Co-authored-by: Colby Thomas <coloradocolby@gmail.com>
Co-authored-by: Vamshi Surabhi <0x777@users.noreply.github.com>
GitOrigin-RevId: 946665878fb9199d067ad1bd981de9525e86a0ae
2021-03-04 06:36:15 +00:00
hasura-bot
564184ef95 docs: use same userId in login example (#127)
Co-authored-by: Tobias Törnros <t.tornros@gmail.com>
GITHUB_PR_NUMBER: 6270
GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/6270

Co-authored-by: Tobias Törnros <t.tornros@gmail.com>
Co-authored-by: Vamshi Surabhi <0x777@users.noreply.github.com>
GitOrigin-RevId: 3eed6b2cb413911a407a2a6ecf3e400d2d0919ab
2021-03-04 06:31:59 +00:00
Vamshi Surabhi
ab1ccfdbcd rfc: permissions layer on functions (#384)
GitOrigin-RevId: 1eb01e0d4579298478cdb3d1f2669d902e466c48
2021-03-04 04:08:09 +00:00
Vamshi Surabhi
95fe9be148 rfc: optimistic concurrency control for metadata changes (#480)
GitOrigin-RevId: 9b6f10138777e1d078cad37b0325b9973566c0a0
2021-03-04 04:08:03 +00:00
Aleksandra Sikora
c763494005 console: fix deleting remote relationship
GitOrigin-RevId: 31839bb8c4e26cc760bc3d9cbfbb0bd04c027d9b
2021-03-03 15:24:53 +00:00
Vijay Prasanna
968b573171 console: add relationship tab for mssql tables
GitOrigin-RevId: dc55849c9c38834481fc855e5242f7bf0d3a5e6e
2021-03-03 14:18:38 +00:00
Vladimir Ciobanu
d5ff1acf2d better handling for one-to-one relationships
Co-authored-by: Rikin Kachhia <54616969+rikinsk@users.noreply.github.com>
GitOrigin-RevId: 1bb5bc0c4ac8109ee1d20563d23cf98e0906a483
2021-03-03 13:02:59 +00:00
Karthikeyan Chinnakonda
15ed0cf536 server: document the remote joins architecture
GitOrigin-RevId: f142908fa3dd3b0cb8887521c639be4a017e606a
2021-03-03 11:47:13 +00:00
Vijay Prasanna
42f5d66015 console: fix adding new function doesn't update sidebar content
Co-authored-by: Aleksandra Sikora <9019397+beerose@users.noreply.github.com>
GitOrigin-RevId: 5c2e0366f50b46846d05be84d4256bd406cf8829
2021-03-03 10:29:22 +00:00
Praveen Durairaju
917670db36 update brand assets
GitOrigin-RevId: df68cc9d4141e1e5c29dd33509c90f91c03744dd
2021-03-03 09:00:49 +00:00
Vladimir Ciobanu
d4d02c08d8 update ci-info-hs for cabal 3.4 (#747)
Co-authored-by: Vamshi Surabhi <0x777@users.noreply.github.com>
GitOrigin-RevId: 29bed5510b971572bf545e588065bbe1b5743d2c
2021-03-03 07:02:42 +00:00
David Overton
456b6d5664 Tests for metadata resource version
GitOrigin-RevId: c1db1355ef8c6617db8179c8c50ba2bd91f7062f
2021-03-03 04:41:02 +00:00
hasura-bot
28db360098 Fix typo in response-caching.rst (#734)
Co-authored-by: chrismcc <chrisvariety@users.noreply.github.com>
GITHUB_PR_NUMBER: 6623
GITHUB_PR_URL: https://github.com/hasura/graphql-engine/pull/6623

Co-authored-by: chrismcc <chrisvariety@users.noreply.github.com>
Co-authored-by: Vamshi Surabhi <0x777@users.noreply.github.com>
GitOrigin-RevId: 5169da9bfa2052ca5f11b25e29d2b5660d93c473
2021-03-03 03:59:13 +00:00