Skip to content

Commit

Permalink
Merge branch 'dev' of https://github.com/bcgov/api-services-portal in…
Browse files Browse the repository at this point in the history
…to dev
  • Loading branch information
jTendeck committed Dec 1, 2022
2 parents ad59e33 + 03a2658 commit d453301
Show file tree
Hide file tree
Showing 10 changed files with 149 additions and 20 deletions.
2 changes: 1 addition & 1 deletion feeds/prometheus/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const queries = [
id: 'kong_http_requests_daily_service_code',
},
{
query: 'sum(increase(kong_http_status[60m])) by (service)',
query: 'sum(increase(kong_http_status[60m])) by (service,namespace)',
step: 60 * 60,
id: 'kong_http_requests_hourly_service',
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@

query GetServices($days: [String!]) {
allGatewayServicesByNamespace(first: 200) {
id
name
updatedAt
environment {
id
name
active
flow
product {
id
name
organization {
title
}
organizationUnit {
title
}
}
}
routes {
id
name
}
plugins {
id
name
}
}

allGatewayServiceMetricsByNamespace(
orderBy: "day_ASC"
where: { query: "kong_http_requests_hourly_namespace", day_in: $days }
) {
query
day
metric
values
}
}
2 changes: 1 addition & 1 deletion src/authz/matrix.csv
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ Portal User,,myApplications,,,,,,,portal-user,,,allow,filterByOwner
API Owner Role Rules,,allGatewayServicesByNamespace,,,,,,,,,"api-owner,provider-user",allow,filterByUserNS
API Owner Role Rules,,allGatewayRoutesByNamespace,,,,,,,,,"api-owner,provider-user",allow,filterByUserNS
API Owner Role Rules,,allGatewayPluginsByNamespace,,,,,,,,,"api-owner,provider-user",allow,filterByUserNS
API Owner Role Rules,,allGatewayServiceMetricsByNamespace,,,,,,,,,"api-owner,provider-user",allow,filterByServiceNS
API Owner Role Rules,,allGatewayServiceMetricsByNamespace,,,,,,,,,"api-owner,provider-user",allow,filterByUserNS
API Owner Role Rules,,allProductsByNamespace,,,,,,,,,"api-owner,provider-user",allow,filterByUserNS
API Owner Role Rules,,allNamespaceServiceAccounts,,,,,,,,,"api-owner,provider-user",allow,filterByUserNS
API Owner Role Rules,,allCredentialIssuersByNamespace,,,,,,,,,"api-owner,provider-user",allow,filterByUserNS
Expand Down
10 changes: 10 additions & 0 deletions src/batch/data-rules.js
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,11 @@ const metadata = {
transformations: {
metric: { name: 'toString' },
values: { name: 'toString' },
namespace: {
name: 'byKey',
key: 'metric.namespace',
refKey: 'namespace',
},
service: {
name: 'connectOne',
key: 'metric.service',
Expand Down Expand Up @@ -606,9 +611,14 @@ const metadata = {
'namespace',
'actor',
'blob',
'filterKey1',
'filterKey2',
'filterKey3',
'filterKey4',
],
transformations: {
actor: { name: 'connectOne', list: 'allUsers', refKey: 'username' },
context: { name: 'toString' },
blob: {
name: 'connectExclusiveOne',
list: 'Blob',
Expand Down
2 changes: 2 additions & 0 deletions src/batch/feed-worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { strict as assert } from 'assert';
import {
alwaysTrue,
alwaysFalse,
byKey,
connectExclusiveList,
connectExclusiveOne,
connectMany,
Expand Down Expand Up @@ -41,6 +42,7 @@ const hooks = {
const transformations = {
toStringDefaultArray: toStringDefaultArray,
toString: toString,
byKey: byKey,
mapNamespace: mapNamespace,
connectExclusiveList: connectExclusiveList,
connectExclusiveOne: connectExclusiveOne,
Expand Down
25 changes: 25 additions & 0 deletions src/batch/transformations/byKey.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Logger } from '../../logger';
import { dot } from '../feed-worker';

export async function byKey(
keystone: any,
transformInfo: any,
currentData: any,
inputData: any,
_fieldKey: string
) {
// fieldKey: The field that has the new value in the input
const fieldKey = 'key' in transformInfo ? transformInfo['key'] : _fieldKey;

const value = dot(inputData, fieldKey);

if (typeof value === 'undefined') {
return null;
} else {
return currentData != null &&
_fieldKey in currentData &&
currentData[_fieldKey] === value
? null
: value;
}
}
2 changes: 2 additions & 0 deletions src/batch/transformations/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ export { alwaysTrue } from './alwaysTrue';

export { alwaysFalse } from './alwaysFalse';

export { byKey } from './byKey';

export { connectExclusiveList } from './connectExclusiveList';

export { connectExclusiveOne } from './connectExclusiveOne';
Expand Down
38 changes: 20 additions & 18 deletions src/lists/Metric.js
Original file line number Diff line number Diff line change
@@ -1,36 +1,38 @@
const { Text, Checkbox, Relationship } = require('@keystonejs/fields')
const { Markdown } = require('@keystonejs/fields-markdown')
const { Text, Checkbox, Relationship } = require('@keystonejs/fields');
const { Markdown } = require('@keystonejs/fields-markdown');

const { byTracking, atTracking } = require('@keystonejs/list-plugins')
const { byTracking, atTracking } = require('@keystonejs/list-plugins');

const { EnforcementPoint } = require('../authz/enforcement')
const { EnforcementPoint } = require('../authz/enforcement');

module.exports = {
fields: {
name: {
type: Text,
isRequired: true
type: Text,
isRequired: true,
},
query: {
type: Text,
isRequired: true
type: Text,
isRequired: true,
},
day: {
type: Text,
isRequired: true
type: Text,
isRequired: true,
},
metric: {
type: Text,
isRequired: true
type: Text,
isRequired: true,
},
values: {
type: Text,
isRequired: true
type: Text,
isRequired: true,
},
namespace: {
type: Text,
isRequired: false,
},
service: { type: Relationship, ref: 'GatewayService', many: false },
},
access: EnforcementPoint,
plugins: [
atTracking()
]
}
plugins: [atTracking()],
};
23 changes: 23 additions & 0 deletions src/nextapp/shared/types/query.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4031,6 +4031,7 @@ export type Metric = {
day?: Maybe<Scalars['String']>;
metric?: Maybe<Scalars['String']>;
values?: Maybe<Scalars['String']>;
namespace?: Maybe<Scalars['String']>;
service?: Maybe<GatewayService>;
updatedAt?: Maybe<Scalars['DateTime']>;
createdAt?: Maybe<Scalars['DateTime']>;
Expand All @@ -4042,6 +4043,7 @@ export type MetricCreateInput = {
day?: Maybe<Scalars['String']>;
metric?: Maybe<Scalars['String']>;
values?: Maybe<Scalars['String']>;
namespace?: Maybe<Scalars['String']>;
service?: Maybe<GatewayServiceRelateToOneInput>;
};

Expand All @@ -4051,6 +4053,7 @@ export type MetricUpdateInput = {
day?: Maybe<Scalars['String']>;
metric?: Maybe<Scalars['String']>;
values?: Maybe<Scalars['String']>;
namespace?: Maybe<Scalars['String']>;
service?: Maybe<GatewayServiceRelateToOneInput>;
};

Expand Down Expand Up @@ -4151,6 +4154,24 @@ export type MetricWhereInput = {
values_not_ends_with_i?: Maybe<Scalars['String']>;
values_in?: Maybe<Array<Maybe<Scalars['String']>>>;
values_not_in?: Maybe<Array<Maybe<Scalars['String']>>>;
namespace?: Maybe<Scalars['String']>;
namespace_not?: Maybe<Scalars['String']>;
namespace_contains?: Maybe<Scalars['String']>;
namespace_not_contains?: Maybe<Scalars['String']>;
namespace_starts_with?: Maybe<Scalars['String']>;
namespace_not_starts_with?: Maybe<Scalars['String']>;
namespace_ends_with?: Maybe<Scalars['String']>;
namespace_not_ends_with?: Maybe<Scalars['String']>;
namespace_i?: Maybe<Scalars['String']>;
namespace_not_i?: Maybe<Scalars['String']>;
namespace_contains_i?: Maybe<Scalars['String']>;
namespace_not_contains_i?: Maybe<Scalars['String']>;
namespace_starts_with_i?: Maybe<Scalars['String']>;
namespace_not_starts_with_i?: Maybe<Scalars['String']>;
namespace_ends_with_i?: Maybe<Scalars['String']>;
namespace_not_ends_with_i?: Maybe<Scalars['String']>;
namespace_in?: Maybe<Array<Maybe<Scalars['String']>>>;
namespace_not_in?: Maybe<Array<Maybe<Scalars['String']>>>;
service?: Maybe<GatewayServiceWhereInput>;
service_is_null?: Maybe<Scalars['Boolean']>;
updatedAt?: Maybe<Scalars['DateTime']>;
Expand Down Expand Up @@ -7747,6 +7768,8 @@ export enum SortMetricsBy {
MetricDesc = 'metric_DESC',
ValuesAsc = 'values_ASC',
ValuesDesc = 'values_DESC',
NamespaceAsc = 'namespace_ASC',
NamespaceDesc = 'namespace_DESC',
ServiceAsc = 'service_ASC',
ServiceDesc = 'service_DESC',
UpdatedAtAsc = 'updatedAt_ASC',
Expand Down
23 changes: 23 additions & 0 deletions src/services/keystone/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4031,6 +4031,7 @@ export type Metric = {
day?: Maybe<Scalars['String']>;
metric?: Maybe<Scalars['String']>;
values?: Maybe<Scalars['String']>;
namespace?: Maybe<Scalars['String']>;
service?: Maybe<GatewayService>;
updatedAt?: Maybe<Scalars['DateTime']>;
createdAt?: Maybe<Scalars['DateTime']>;
Expand All @@ -4042,6 +4043,7 @@ export type MetricCreateInput = {
day?: Maybe<Scalars['String']>;
metric?: Maybe<Scalars['String']>;
values?: Maybe<Scalars['String']>;
namespace?: Maybe<Scalars['String']>;
service?: Maybe<GatewayServiceRelateToOneInput>;
};

Expand All @@ -4051,6 +4053,7 @@ export type MetricUpdateInput = {
day?: Maybe<Scalars['String']>;
metric?: Maybe<Scalars['String']>;
values?: Maybe<Scalars['String']>;
namespace?: Maybe<Scalars['String']>;
service?: Maybe<GatewayServiceRelateToOneInput>;
};

Expand Down Expand Up @@ -4151,6 +4154,24 @@ export type MetricWhereInput = {
values_not_ends_with_i?: Maybe<Scalars['String']>;
values_in?: Maybe<Array<Maybe<Scalars['String']>>>;
values_not_in?: Maybe<Array<Maybe<Scalars['String']>>>;
namespace?: Maybe<Scalars['String']>;
namespace_not?: Maybe<Scalars['String']>;
namespace_contains?: Maybe<Scalars['String']>;
namespace_not_contains?: Maybe<Scalars['String']>;
namespace_starts_with?: Maybe<Scalars['String']>;
namespace_not_starts_with?: Maybe<Scalars['String']>;
namespace_ends_with?: Maybe<Scalars['String']>;
namespace_not_ends_with?: Maybe<Scalars['String']>;
namespace_i?: Maybe<Scalars['String']>;
namespace_not_i?: Maybe<Scalars['String']>;
namespace_contains_i?: Maybe<Scalars['String']>;
namespace_not_contains_i?: Maybe<Scalars['String']>;
namespace_starts_with_i?: Maybe<Scalars['String']>;
namespace_not_starts_with_i?: Maybe<Scalars['String']>;
namespace_ends_with_i?: Maybe<Scalars['String']>;
namespace_not_ends_with_i?: Maybe<Scalars['String']>;
namespace_in?: Maybe<Array<Maybe<Scalars['String']>>>;
namespace_not_in?: Maybe<Array<Maybe<Scalars['String']>>>;
service?: Maybe<GatewayServiceWhereInput>;
service_is_null?: Maybe<Scalars['Boolean']>;
updatedAt?: Maybe<Scalars['DateTime']>;
Expand Down Expand Up @@ -7747,6 +7768,8 @@ export enum SortMetricsBy {
MetricDesc = 'metric_DESC',
ValuesAsc = 'values_ASC',
ValuesDesc = 'values_DESC',
NamespaceAsc = 'namespace_ASC',
NamespaceDesc = 'namespace_DESC',
ServiceAsc = 'service_ASC',
ServiceDesc = 'service_DESC',
UpdatedAtAsc = 'updatedAt_ASC',
Expand Down

0 comments on commit d453301

Please sign in to comment.