56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
*/
|
|
|
|
import { get } from '@ember/object';
|
|
import { assign } from '@ember/polyfills';
|
|
import ApplicationSerializer from './application';
|
|
import classic from 'ember-classic-decorator';
|
|
|
|
@classic
|
|
export default class DeploymentSerializer extends ApplicationSerializer {
|
|
attrs = {
|
|
versionNumber: 'JobVersion',
|
|
};
|
|
|
|
mapToArray = [{ beforeName: 'TaskGroups', afterName: 'TaskGroupSummaries' }];
|
|
|
|
normalize(typeHash, hash) {
|
|
if (hash) {
|
|
hash.PlainJobId = hash.JobID;
|
|
hash.Namespace =
|
|
hash.Namespace || get(hash, 'Job.Namespace') || 'default';
|
|
|
|
// Ember Data doesn't support multiple inverses. This means that since jobs have
|
|
// two relationships to a deployment (hasMany deployments, and belongsTo latestDeployment),
|
|
// the deployment must in turn have two relationships to the job, despite it being the
|
|
// same job.
|
|
hash.JobID = hash.JobForLatestID = JSON.stringify([
|
|
hash.JobID,
|
|
hash.Namespace,
|
|
]);
|
|
}
|
|
|
|
return super.normalize(typeHash, hash);
|
|
}
|
|
|
|
extractRelationships(modelClass, hash) {
|
|
const namespace = this.store
|
|
.adapterFor(modelClass.modelName)
|
|
.get('namespace');
|
|
const id = this.extractId(modelClass, hash);
|
|
|
|
return assign(
|
|
{
|
|
allocations: {
|
|
links: {
|
|
related: `/${namespace}/deployment/allocations/${id}`,
|
|
},
|
|
},
|
|
},
|
|
super.extractRelationships(modelClass, hash)
|
|
);
|
|
}
|
|
}
|