Project

Profile

Help

31+ Ideas (post MVP) » History » Sprint/Milestone 25

bmbouter, 03/01/2018 04:15 PM
Adding metalink 4.0 support idea

1 12 bmbouter
# Core 3.1+ Ideas (post MVP)
2 1 bmbouter
3 11 bmbouter
## Authentication
4 1 bmbouter
5
  - External
6
  - Expiring passwords
7
  - REMOTE_USER support?
8
9 24 bmbouter
As an API user, I can have documentation to generate a JSON Web Token (JWT) without the server being online.
10
11
As an administrator, I can disable JWT token expiration. This configuration is in the settings file and is system-wide.
12
13
As an administrator, I can configure the JWT tokens to expire after a configurable amount of time. This configuration is in the settings file and is system-wide.
14
15
The JWT shall have a username identifier
16
17
As an API user, I can authenticate any API call with a valid JWT
18
19
As a JWT authenticated user, I can refresh my JWT token if Pulp is configured with JWT_ALLOW_REFRESH set to True (default is False)
20
21
As an API user, I can invalidate all existing JWT tokens for a given user.
22
23
As an authenticated user, when deleting a user 'foo', all of user 'foo's existing JWTs are invalidated.
24
25
As an un-authenticated user, I can obtain a JWT token by using a username and password.
26
27 25 bmbouter
## Metalink 4.0 support
28
29
As a plugin writer I can hand metalink URLs without digetst to HttpDownloaders and have them Do The Right Thing™ \[[3415](https://pulp.plan.io/issues/3415)\]
30
31 11 bmbouter
## Authorization
32 1 bmbouter
33
\<put ideas here\>
34
35 11 bmbouter
## Versioned Repository
36 1 bmbouter
37 22 bmbouter
As an authenticated user, I can get a list of a repo's versions.
38 6 bmbouter
39 22 bmbouter
As an authenticated user, I can specify how many versions to keep at a time.
40 6 bmbouter
41 22 bmbouter
As an authenticated user, I can get a reference to a new repo version from any task that adds or removes content.
42 6 bmbouter
43 22 bmbouter
As an authenticated user, I can publish a repo and have it default to the latest version.
44 6 bmbouter
45 22 bmbouter
As an authenticated user, I can run a publisher with a repository version.
46 1 bmbouter
47 11 bmbouter
## Content Manipulation
48 2 bmbouter
49
  - Sync can have "sync" options.
50
  - Sync options are different than "importer" attributes.
51
52 14 bmbouter
As an authenticated user, I can remove one or more units from one or more repositories
53
54
  - filtering support on the unit(s)
55
  - filtering support on the repositories
56
57 22 bmbouter
As an authenticated user I can specify a filter to identify content to be added to a repo
58 16 bmbouter
59 21 bmbouter
## Content Deletion
60
61
As an authenticated user, artifacts are deleted if they were exclusively used by the content unit
62
63
As an authenticated user, I can delete multiple content units with filtering
64
65
  - If a content unit is still in at least one repository the delete fails with a listing of all repositories the unit is part of.
66
  - Artifacts and associated files from deleted units are cleaned up
67
68 19 bmbouter
## Content Filtering
69
70
As a user, I can search all content for a specific content unit regardless of type
71
72
As a user, I can find out all the repos in which a piece of content appears
73
74
  - example: bad content the user wants to remove from all repos in Pulp
75
76 20 bmbouter
## Publications
77
78
As an authenticated user, I have filters on the Publication list:
79
80
  - id: (id_in_list) \# id equality is not necessary, objects are referenced by id
81
  - filter by created range
82
  - filter by not associated w/ distribution.
83
84 11 bmbouter
## Upload
85 5 bmbouter
86
  - Allow for a large single file to have its chunks uploaded in parallel.
87
88 18 amacdona@redhat.com
Repositories 3.1+  
89
filter by content type(ex. repository_contains_type: rpm)  
90
last_content_added(content_added_since)  
91
last_content_removed(content_removed_since)  
92
"partial" repo name search (name: substring)  
93
"tagged" repo names (name: substring)
94
95
Importer 3.1+
96
97 11 bmbouter
## Importers
98 1 bmbouter
99
  - Sync from multiple importers
100
  - We need to support multiple importers to properly support distributions and ostree (with distributions).
101
  - add auto-publish feature
102
  - As an authenticated user I have a notes field I can use to store arbitrary \<key, value\> tuples with both key and value being strings.
103 11 bmbouter
  - Add the force-full option.
104 18 amacdona@redhat.com
  - add filter for last_synced, either last_synced_lt or last_syced_in_range
105
  - add filter by repository if we no longer nest
106
  - add filter for feed_url: (equality, substring)
107 1 bmbouter
108 11 bmbouter
## Publishers
109 2 bmbouter
110 11 bmbouter
  - Add an auto_publish feature. Possibly a field called auto_publish \[default to true\] that indicates that the publisher will publish automatically when the associated repository's content has changed.
111 1 bmbouter
  - Add the force-full option.
112 12 bmbouter
  - Add a no-op publishing feature
113 11 bmbouter
114
## Task Management
115
116 3 bmbouter
Allow filtering of tasks on 'completed' or 'started'. These 'meta' states are not states directly, but they represent a group of states. For instance 'completed' would be represent 'skipped', 'completed', 'failed', and 'canceled'.
117
118
Additional filtering support:
119 1 bmbouter
120 3 bmbouter
  - worker
121
  - started_at, filtered by less than, greater than
122 1 bmbouter
  - finished_at, filtered by less than, greater than
123 3 bmbouter
  - resource field on an associated ReservedResource
124
125
As an authenticated user I can DELETE a task
126
127 11 bmbouter
## Data Exports
128 4 bmbouter
129
As an authenticated user, I can export a group of published repositories to a single media
130
131
As an authenticated user, I can export an incremental publish of a group of repositories to a single media
132
133
For both use cases \^, the layout needs some more discussion.
134
135
  - maybe it is specified by the user?
136 1 bmbouter
  - maybe it is maintains the published filesystem tree structure?
137
138 4 bmbouter
Also there are two main options in this area.
139
140
1\. One is a publish bundler that bundles up all the units published to disk. Then this media (e.g. an iso) is mounted and brought into another Pulp installation using a sync. This will only work for content types that don't require 'live APIs'
141
142
2\. Another option is to export database model data and disk content units from one Pulp to media and then import by directly adding those units to another Pulp. This could be done through the API possibly. This would allow things like Docker to be exported and imported, but it may not work for OSTree??
143
144 1 bmbouter
Also there was discussion about OSTree possibly never supporting and incremental export/import due to how OSTree stores content.
145
146
## Server Plugins (which content types are available and importers and publishers)
147 9 bmbouter
148
## Orphans
149
150 14 bmbouter
As an authenticated user, I can force delete content units even when associated with repositories.  
151
As an authenticated user, I can cleanup orphaned content units for a specific "type" without specifying the units specifically.  
152 15 bmbouter
As an authenticated user, I can filter orphan cleanup to only remove orphaned content units and artifacts created before a specified datetime.  
153
As an authenticated user, I list all orphaned content units and orphaned artifacts that are not in any repositories
154 1 bmbouter
155
## Plugin API
156
157
Incremental publishing support
158 23 bmbouter
159
## Consumer Profile Applicability
160
161
Using Consumer Profiles and repository bindings I can compute applicability with 2.y parity
162
163
  - Performance needs to be awesome
164
165
Glossary term:  
166
Consumer Profile - A set of installed units on a specific machine. In Pulp3 this machine is not a "consumer" in the same sense as Pulp2. Pulp is not "managing" the machine anymore; Pulp3 only collects Profile information.
167 8 dkliban@redhat.com
168 11 bmbouter
## Status API
169 8 dkliban@redhat.com
170
Status API return status of Squid (aka Proxy), web server, streamer
171
172
API to view an overall health attribute that returns a message when something is not operating properly or True.
173
174
I can view information about unapplied migrations
175
176 1 bmbouter
I can view a verbose Status API which returns a Pulp version for each component along with a list of all plugins and their versions.
177
178
## Alternate content source support
179 12 bmbouter
180 17 bmbouter
## Deployment
181
182 22 bmbouter
As a user, I can deploy the Pulp content serving view without all of Pulp's requirements.
183 17 bmbouter
184 12 bmbouter
# Plugin Feature Set 3.1+ Ideas (post MVP)
185
186
## Python
187
188
  - Add a mirror sync policy
189 13 mhrivnak
190
## Event Listener Notifier
191
192
I can receive serialized task info via AMQP on each task save
193
194
*Can this be restated in more pedantic terms? Does this mean that an arbitrary host can attach itself to Pulp's AMQP message bus and get updates on the progress of tasks?*