Merge pull request #1408 from cptran777/upstream-lineage

Use upstream lineage instead of resolved compliance
This commit is contained in:
Charlie Tran 2018-09-25 15:04:11 -07:00 committed by GitHub
commit 6b518f9b9e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 30 additions and 13 deletions

View File

@ -44,6 +44,8 @@ import { containerDataSource } from 'wherehows-web/utils/components/containers/d
import { saveDatasetRetentionByUrn } from 'wherehows-web/utils/api/datasets/retention'; import { saveDatasetRetentionByUrn } from 'wherehows-web/utils/api/datasets/retention';
import { extractRetentionFromComplianceInfo } from 'wherehows-web/utils/datasets/retention'; import { extractRetentionFromComplianceInfo } from 'wherehows-web/utils/datasets/retention';
import { IDatasetRetention } from 'wherehows-web/typings/api/datasets/retention'; import { IDatasetRetention } from 'wherehows-web/typings/api/datasets/retention';
import { readUpstreamDatasetsByUrn } from 'wherehows-web/utils/api/datasets/lineage';
import { LineageList } from 'wherehows-web/typings/api/datasets/relationships';
/** /**
* Type alias for the response when container data items are batched * Type alias for the response when container data items are batched
@ -53,7 +55,8 @@ type BatchComplianceResponse = [
Array<IComplianceDataType>, Array<IComplianceDataType>,
IComplianceSuggestion, IComplianceSuggestion,
IDatasetSchema, IDatasetSchema,
IDatasetExportPolicy | null IDatasetExportPolicy | null,
LineageList
]; ];
/** /**
@ -126,6 +129,13 @@ export default class DatasetComplianceContainer extends Component {
*/ */
complianceInfo: IComplianceInfo | void; complianceInfo: IComplianceInfo | void;
/**
* List object containing a list of lineage objects that include upstream dataests and lineage
* metainformation
* @type {LineageList}
*/
upstreams: LineageList = [];
/** /**
* Object containing the fields for the export policy for this dataset * Object containing the fields for the export policy for this dataset
* @type {IDatasetExportPolicy} * @type {IDatasetExportPolicy}
@ -190,13 +200,15 @@ export default class DatasetComplianceContainer extends Component {
complianceDataTypes, complianceDataTypes,
complianceSuggestion, complianceSuggestion,
{ columns, schemaless }, { columns, schemaless },
exportPolicy exportPolicy,
upstreams
]: BatchComplianceResponse = await Promise.all([ ]: BatchComplianceResponse = await Promise.all([
readDatasetComplianceByUrn(urn), readDatasetComplianceByUrn(urn),
readComplianceDataTypes(), readComplianceDataTypes(),
readDatasetComplianceSuggestionByUrn(urn), readDatasetComplianceSuggestionByUrn(urn),
readDatasetSchemaByUrn(urn), readDatasetSchemaByUrn(urn),
readDatasetExportPolicyByUrn(urn) readDatasetExportPolicyByUrn(urn),
readUpstreamDatasetsByUrn(urn)
]); ]);
const schemaFieldNamesMappedToDataTypes = await iterateArrayAsync(columnDataTypesAndFieldNames)(columns); const schemaFieldNamesMappedToDataTypes = await iterateArrayAsync(columnDataTypesAndFieldNames)(columns);
const { containingPersonalData, fromUpstream } = complianceInfo; const { containingPersonalData, fromUpstream } = complianceInfo;
@ -218,7 +230,8 @@ export default class DatasetComplianceContainer extends Component {
complianceSuggestion, complianceSuggestion,
schemaFieldNamesMappedToDataTypes, schemaFieldNamesMappedToDataTypes,
schemaless, schemaless,
exportPolicy exportPolicy,
upstreams
}); });
} }

View File

@ -3,7 +3,6 @@ import { task, TaskInstance } from 'ember-concurrency';
import { get, set, computed, setProperties, getProperties } from '@ember/object'; import { get, set, computed, setProperties, getProperties } from '@ember/object';
import { IDatasetView } from 'wherehows-web/typings/api/datasets/dataset'; import { IDatasetView } from 'wherehows-web/typings/api/datasets/dataset';
import { assert } from '@ember/debug'; import { assert } from '@ember/debug';
import { readUpstreamDatasetsByUrn } from 'wherehows-web/utils/api/datasets/lineage';
import { IUpstreamWithComplianceMetadata } from 'wherehows-web/typings/app/datasets/lineage'; import { IUpstreamWithComplianceMetadata } from 'wherehows-web/typings/app/datasets/lineage';
import { datasetsWithComplianceMetadata } from 'wherehows-web/constants/datasets/lineage'; import { datasetsWithComplianceMetadata } from 'wherehows-web/constants/datasets/lineage';
import { arraySome } from 'wherehows-web/utils/array'; import { arraySome } from 'wherehows-web/utils/array';
@ -18,6 +17,7 @@ import Notifications, { NotificationEvent } from 'wherehows-web/services/notific
import { IComplianceInfo } from 'wherehows-web/typings/api/datasets/compliance'; import { IComplianceInfo } from 'wherehows-web/typings/api/datasets/compliance';
import { service } from '@ember-decorators/service'; import { service } from '@ember-decorators/service';
import { LineageList } from 'wherehows-web/typings/api/datasets/relationships'; import { LineageList } from 'wherehows-web/typings/api/datasets/relationships';
import { readUpstreamDatasetsByUrn } from 'wherehows-web/utils/api/datasets/lineage';
/** /**
* Aliases the yieldable values for the container task * Aliases the yieldable values for the container task
@ -68,10 +68,10 @@ export default class UpstreamDatasetContainer extends Component {
supportedPurgePolicies: Array<PurgePolicy> = []; supportedPurgePolicies: Array<PurgePolicy> = [];
/** /**
* The list of upstream datasets for the related urn * The list of upstream datasets for the related urn, passed in from parent container
* @type {LineageList} * @type {LineageList}
*/ */
upstreamDatasets: LineageList = []; upstreamLineage: LineageList;
/** /**
* List of metadata properties for upstream datasets * List of metadata properties for upstream datasets
@ -135,8 +135,8 @@ export default class UpstreamDatasetContainer extends Component {
*/ */
getUpstreamDatasetsTask = task(function*(this: UpstreamDatasetContainer): IterableIterator<Promise<LineageList>> { getUpstreamDatasetsTask = task(function*(this: UpstreamDatasetContainer): IterableIterator<Promise<LineageList>> {
const upstreamDatasets: LineageList = yield readUpstreamDatasetsByUrn(get(this, 'urn')); const upstreamDatasets: LineageList = yield readUpstreamDatasetsByUrn(get(this, 'urn'));
return set(this, 'upstreamDatasets', upstreamDatasets); return set(this, 'upstreamLineage', upstreamDatasets);
}); }).restartable();
/** /**
* Task to get and set upstream metadata for upstream datasets * Task to get and set upstream metadata for upstream datasets
@ -146,7 +146,9 @@ export default class UpstreamDatasetContainer extends Component {
getUpstreamMetadataTask = task(function*( getUpstreamMetadataTask = task(function*(
this: UpstreamDatasetContainer this: UpstreamDatasetContainer
): IterableIterator<TaskInstance<Promise<LineageList>> | Promise<Array<IUpstreamWithComplianceMetadata>>> { ): IterableIterator<TaskInstance<Promise<LineageList>> | Promise<Array<IUpstreamWithComplianceMetadata>>> {
const upstreamLineage: LineageList = yield get(this, 'getUpstreamDatasetsTask').perform(); // Fallback logic, if we have lineage then use that otherwise get upstreams again
// prettier-ignore
const upstreamLineage = get(this, 'upstreamLineage') || <LineageList>(yield get(this, 'getUpstreamDatasetsTask').perform());
const upstreamMetadataPromises = datasetsWithComplianceMetadata(upstreamLineage.map(lineage => lineage.dataset)); const upstreamMetadataPromises = datasetsWithComplianceMetadata(upstreamLineage.map(lineage => lineage.dataset));
const upstreamsMetadata: Array<IUpstreamWithComplianceMetadata> = yield Promise.all(upstreamMetadataPromises); const upstreamsMetadata: Array<IUpstreamWithComplianceMetadata> = yield Promise.all(upstreamMetadataPromises);

View File

@ -10,11 +10,13 @@
{{else}} {{else}}
{{#if complianceInfo.fromUpstream}} {{#if upstreams.length}}
{{datasets/containers/upstream-dataset {{datasets/containers/upstream-dataset
urn=urn urn=urn
platform=platform platform=platform
upstreamLineage=upstreams
hasResolvedCompliance=complianceInfo.fromUpstream
upstreamComplianceType=complianceInfo.complianceType upstreamComplianceType=complianceInfo.complianceType
}} }}

View File

@ -13,10 +13,10 @@
<div class="upstream-dataset"> <div class="upstream-dataset">
<span class="upstream-dataset__compliance-status"> <span class="upstream-dataset__compliance-status">
{{tooltip-on-element {{tooltip-on-element
text=(if parent.hasCompliance "Compliance completed for parent dataset" "Please complete the Compliance on this parent dataset") text=(if hasResolvedCompliance "Compliance completed for parent dataset" "Please complete the Compliance on this parent dataset")
}} }}
{{#if parent.hasCompliance}} {{#if hasResolvedCompliance}}
{{fa-icon "check" class="upstream-dataset__compliance-status__complete"}} {{fa-icon "check" class="upstream-dataset__compliance-status__complete"}}
{{else}} {{else}}
{{fa-icon "exclamation" class="upstream-dataset__compliance-status__incomplete"}} {{fa-icon "exclamation" class="upstream-dataset__compliance-status__incomplete"}}