Project

Profile

Help

Refactor #4206

closed

Prepend all pulpcore model fields in the Content model hierarchy with _ (e.g. '_type', '_id', '_notes')

Added by dalley almost 6 years ago. Updated almost 5 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Assignee:
Category:
-
Sprint/Milestone:
Start date:
Due date:
% Done:

0%

Estimated time:
Platform Release:
Groomed:
Yes
Sprint Candidate:
Yes
Tags:
Sprint:
Sprint 47
Quarter:

Description

Motivations

1. Avoiding attribute naming collisions when content writer's subclass Content.

2. Allow users to easily see which attributes are from pulpcore and therefore common to all content types.

It was determined after long discussion here [0] that the solution to this should be to make sure all of the fields used by Pulpcore on models that are intended to be extended via the Plugin API are prepended with an underscore character.

Changes

Rename the Model fields here in the following ways:
https://github.com/pulp/pulp/blob/d1dc089890f167617fe9917af087d5587708296b/pulpcore/pulpcore/app/models/base.py#L25-L27

created -> _created
id -> _id
last_updated -> _last_updated

As well as the MasterModel "type" field here:
https://github.com/pulp/pulp/blob/d1dc089890f167617fe9917af087d5587708296b/pulpcore/pulpcore/app/models/base.py#L80

type -> _type

Also for the Content model itself:
https://github.com/pulp/pulp/blob/f9707edde3201e61a454efc395ad2d3e3d628f9b/pulpcore/pulpcore/app/models/content.py#L117-L118

notes -> _notes
artifacts -> _artifacts

After changing the field names, a lot of other code will need to be fixed likewise. Serializers and Django ORM queries will need to use the new names, to start with.

Details

This will be a backwards incompatible Beta change for both plugin writers and users. As such, the PR needs the 'breaking-changes', 'rest-API', and 'plugin-writer' labels.

As part of this issue, we should also switch to using 'pk' instead of 'id' in all Django ORM queries. 'pk' is a psuedonym for whatever the Primary Key field is set to, and will work no matter what said field is named. I would recommend searching for ".id", "id__in", and "id=" to make sure all of them are found, although that may not find all of them.

After making ^ change, go through pulp/pulp and update any references to the other field names.

After changing this in Pulpcore, we will need to go through each of the plugins (file, python, docker, rpm, ansible, + plugin_template) and do the same thing (replace usages of 'id' with 'pk' and other renamed fields with _field) in each of those. Link them back to this issue with "re" in the commit message.

[0] https://www.redhat.com/archives/pulp-dev/2018-August/msg00019.html


Related issues

Blocks RPM Support - Refactor #4207: Rename "update_type" and "errata_id" to "type" and "id", as they are named in createrepo_cCLOSED - CURRENTRELEASEdaviddavis

Actions
Blocks Pulp - Task #4067: Commit migrations to source controlCLOSED - CURRENTRELEASEdaviddavis

Actions

Also available in: Atom PDF