Project

General

Profile

PulpV3GapAnalysis » History » Version 8

Brian Bouterse, 06/08/2018 03:55 PM
copypaste, this isn't a thing.

1 1 Brian Bouterse
h1. PulpV3GapAnalysis
2
3
h1.  Content Tab
4
5
h2.  Content -> Red Hat Repositories
6
7
Katello knows the content URLs from candlepin, matches on the CDN, presents them to the user, the user selects them
8
* Katello creates a Repo tracking this in Pulp with client certificates and CA certificate
9
* Katello specifies custom options from the 'Custom Repo Creation Page' but these use cases are covered in that section
10
11
Katello deletes a Repository
12
13
h2.  Content -> Products
14
15
h3.  Content -> Products -> New Product (used for things like CentOS, SLES, etc)
16
17
All data here is stored only in Katello since this is a Product not a Repository and Pulp doesn't have a concept of a Product
18
Sync Plans will *not* be handled inside of Pulp
19
20
h3.  Content -> Products -> {product_name} -> Repositories
21
22
The user selects a type and content-specific fields are shown.
23
24
h4. Debian:
25
26
h5. Sync Options
27
28
* Upstream URL (str)
29
* Releases (csv list)
30
* Components (csv list)
31
* Architectures (csv list)
32
* Verify SSL (boolean)
33
* Upstream username (str)
34
* Upstream password (str)
35
* Ignore Global http Proxy (bool)
36
37
h5. Publish Options
38
39
* Publish via HTTP (bool)       <----------------------------- PROBLEM AREA
40
41
42
h4. Docker
43
44
* Sync Options
45
46
* Ustream URL (str)
47
48
* Upstream Repository Name (str)
49
50
* Verify SSL (bool)
51
52
* Upstream username (str)
53
54
* Upstream password (str)
55
56
* Ignore Global http Proxy (bool)
57
58
59
h4. File
60
61
h5. Sync Options
62
63
* Upstream URL (str)
64
65
* Verify SSL (boolean)
66
67
* Upstream username (str)
68
69
* Upstream password (str)
70
71
* Ignore Global http Proxy (bool)
72
73
h5. Publish Options
74
75
* Publish via HTTP (bool)       <----------------------------- PROBLEM AREA
76
77
78
h4. OSTree
79
80
h5. Sync Options
81
82
* Upstream URL (str)
83
84
* Upstream Sync Policy (choice):  Latest Only, All History, Custom Depth (with a number specified)    <--- in Pulp2 also specified on distributor
85
86
* Verify SSL (boolean)
87
88
* Upstream username (str)
89
90
* Upstream password (str)
91
92
* Ignore Global http Proxy (bool)
93
94
95
h4. Puppet
96
97
h5. Sync Options
98
99
* Upstream URL (str)
100
101
* Verify SSL (boolean)
102
103
* Upstream username (str)
104
105
* Upstream password (str)
106
107
* Mirror on Sync (boolean)
108
109
* Ignore Global http Proxy (bool)
110
111
h5. Publish Options
112
113
* Publish via HTTP (bool)       <----------------------------- PROBLEM AREA
114
115
116
h4. Yum
117
118
h5. General Fields   <------ not used by Pulp
119
120
* Restrict to Architecture (choice)
121
122
* GPG Key (str)  
123
124
h5. Sync Settings
125
126
* Upstream URL (str)
127
128
* Ignorable Content (multiselect): RPM, DRPM, SRPM, Errata, Distribution
129
130
* Verify SSL (boolean)
131
132
* Upstream username (str)
133
134
* Upstream password (str)
135
136
* Download Policy (choice): (On Demand, Background, Immediate)   <---- Background does not have a strong use case
137
138
* Mirror on Sync (bool)
139
140
* Ignore Global http Proxy (bool)
141
142
* SSL CA Cert (str)
143
144
* SSL Client Cert (str)
145
146
* SSL Client Key(str)
147
148
h5. Publish Settings
149
150
* Checksum: (choice) Default, sha256, sha1   <----- for all repodata including primary.xml
151
152
153 3 Brian Bouterse
h3.  Content -> Products -> {product_name} -> Repositories -> {repository_name}
154
155
This displays a created repository.
156
157
Katello allows the user to upload a package
158
159
* Receives the data from the user, sends it to Pulp
160
161 4 Brian Bouterse
* Relies on Pulp to fully parse the metadata and create the unit                <------- REQUIREMENT: must have Pulp determine all metadata
162 3 Brian Bouterse
163
* Associates the the unit with the repository
164
165
Katello Reads a content Summary on this page
166
167 4 Brian Bouterse
h5.  Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Select Action -> Sync Now
168 1 Brian Bouterse
169 4 Brian Bouterse
Katello tells the remote associated with the repository to sync
170 3 Brian Bouterse
171 4 Brian Bouterse
h5.  Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Select Action -> Advaced Sync
172 1 Brian Bouterse
173
Katello can peroform an 'Advnaced Sync':
174 3 Brian Bouterse
175 4 Brian Bouterse
Optimized Sync - Normal sync, presented
176 3 Brian Bouterse
177 4 Brian Bouterse
Complete Sync - force-full on sync and force-full on publish      <--------------------- GAP because we don't have force-full
178 1 Brian Bouterse
179 4 Brian Bouterse
Validate Content Sync - performs a checksum validation on all packages
180 1 Brian Bouterse
181 4 Brian Bouterse
* True Purpose:  Validate existing downloaded content and redownload if the file(s) are missing or corrupt, redownload them.    <-------- GAP
182 1 Brian Bouterse
183 4 Brian Bouterse
184
h5.  Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Select Action -> Republish Repository Metadata
185
186
Republishes the metadata.
187
188
* Katello would create a new Publication and update the Distribution
189
190
191
h5.  Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Select Action -> Delete a Repository
192
193
Deletes a repository
194
195
196 3 Brian Bouterse
h3.  Content -> Products -> {product_name} -> Repositories
197
198
This is the index view of all repositories
199
200
Repsitories in Katello can have the same name, but Pulp enforces a unique name on repositories globally      <--------- GAP
201
202
Katello takes a Product ID which resolves to a set of repos. Katello fetches this set of repos. For each repo we need to fetch:
203
204
* name (str)
205
206
* type (str), e.g. 'yum'
207
208
* sync status, e.g. 'Not synced, Pending, Error'     <-------------------------  GAP this would require a second call to load the data per Remote
209
210
* Content Summary, e.g. 2 packages, 5 errata, etc. Similarly for other types.
211
212
213
Katello can trigger a sync of one or more Repositories at once.
214
215
* Trigger the sync on one or more Remotes as independant calls
216
217
218
Katello can trigger a delete of one or more Repositories at once.
219
220
* Trigger the delete call to Pulp as independant calls
221
222
223
Search/Filtering of the list of Repositories, for Repository attributes
224
225
* content_type: the type of content
226
227
* content_view_id: the id of the content View              <-------- not in Pulp anywhere currently
228
229
* ignore_global_proxy                      <--------- GAP area, not currently in Pulp, but probably should be
230
231
* name
232
233
* product
234
235
* redhat          <----------   Anything added from Red Hat "Products" page in Katello gets Red Hat.
236
237
238
Search/Filtering of the list of Repositories, for content units
239
240
* distribution_arch: 
241
242
* distribution_bootable       <-----------    if Katello can detect if it has a vmlinuz init.rd it knows the distribution is bootable. Detected at the end of every sync.
243 1 Brian Bouterse
244 3 Brian Bouterse
* distribution_family
245
246
* distribution_uuid
247
248 1 Brian Bouterse
* distribution_variant
249
250 4 Brian Bouterse
* distribution_version
251 1 Brian Bouterse
252
253
*NOTE: Must not have to make a call for each item in a list page. Must be able to make one call.*
254
255
256 4 Brian Bouterse
h3.  Content -> Products -> {product_name} -> Repositories -> {repository_name} -> Packages
257 1 Brian Bouterse
258 4 Brian Bouterse
Lists packages in a repository (the latest repository version)
259 1 Brian Bouterse
260 4 Brian Bouterse
Removing packages from the repository
261 1 Brian Bouterse
262 4 Brian Bouterse
* Can remove n packages from the repository
263
* Republish, Redistribute the repository
264
265
266
h2. Content -> Content Credentials
267
268
h3. Content -> Content Credentials -> GPG Keys
269
270
GPG keys can be created and stored by Katello
271
Pulp3 recommendation is to use pulp_file to hold the GPG keys hosted for clients to receive
272
273
274
h3. Content -> Content Credentials -> SSL Certificate  (GAP. This whole section is a GAP b/c Pulp doesn't "host" SSL certs, you have to manually install them on the filesystem first)
275
276
Stores SSL certificates for use by Pulp at sync time as CA cert, client cert, or client key
277
278
* name
279
* value
280
281
Supports updating them
282
Support deleting them
283
Support searching them (name, organization_id)
284
SSL Certs are per-product, so Katello needs some way to restrict the set of available SSL certs for the current "product"
285
286
287
h2. Content -> Sync Plans
288
289
Sync plans will not be handled by Pulp 3, Katello/Foreman will handle scheduling.
290
291
292
h2. Content -> Sync Status
293
294
Show the most-recent sync status from dynflow data. That data is populated by task status results from Pulp, which needs to contain at a minimum:
295
296
* start time
297
* create time
298
* end time
299
* state
300
* progress reports
301
* fatal errors
302
* non-fatal errors
303 1 Brian Bouterse
304
h2.  Content -> Lifecycle Environments
305 5 Brian Bouterse
306
Creates a lifecycle environment
307
308
* Does *not* involve Pulp
309
310
311
h3. Content -> Lifecycle Environments -> {name} -> Details
312
313
Each lifecycle environment has a 'Registry Name Pattern'.      <------- GAP (specific to Docker only)
314
315
* Likely going to be on the Distributor
316
317
* Katello would use the template to produce a concrete value to set on the Distributor
318
319
* Important to ensure that two Distribution don't both receive the same concrete values
320
321
322
h3. Content -> Lifecycle Environments -> {name} -> Content Views
323
324
Filterable by:
325
326
* composite
327
* label
328
* name
329
* organization_id
330
331
332
h3. Content -> Lifecycle Environments -> {name} -> Yum Repositories
333
334
Content will come from CV section on Yum Repositories
335
336
337
h3. Content -> Lifecycle Environments -> {name} -> Errata
338
339
Content will come from CV section on Errata
340
341
342
h3. Content -> Lifecycle Environments -> {name} -> Packages
343
344
Content will come from CV section on Packages
345
346
347
h3. Content -> Lifecycle Environments -> {name} -> Puppet Modules
348
349
Content will come from CV section on Puppet Modules
350
351
352
h3. Content -> Lifecycle Environments -> {name} -> Container Image Tags
353
354
Content will come from CV section on Container Image Tags
355
356
357
h3. Content -> Lifecycle Environments -> {name} -> OSTree Branches
358
359
Content will come from CV section on OSTree Branches
360
361 6 Brian Bouterse
h2.  Content -> Content Views
362 1 Brian Bouterse
363 6 Brian Bouterse
h3. Content -> Content Views -> {name} -> Yum Repositories
364 1 Brian Bouterse
365 6 Brian Bouterse
List/Remove/Add one or more repositories to the Content View
366
* Does *not* involve Pulp
367 1 Brian Bouterse
368 6 Brian Bouterse
h3. Content -> Content Views -> {name} -> Yum Filters
369
370 1 Brian Bouterse
371
h2.  Content -> Activation Keys
372
373
374
h2.  Content -> Content Types
375
376
377
h2.  Content -> Deb Packages
378
379
380
h2.  Content -> Container Image Tags
381
382
383
h2.  Content -> Errata
384
385
386
h2.  Content -> Files
387
388
389
h2.  Content -> OSTree Branches
390
391
392
h2.  Content -> Packages
393
394
395
h2.  Content -> Puppet Modules
396
397
398
399
h1.  Hosts -> Content Hosts
400
401
402
h1.  Non UI things
403
404
* the API endpoint that clients upload their enabled repos
405
* the API endpoint that clients upload their package profiles
406
* the API endpoint that clients register
407
* the API endpoint that clients unregister
408
* speed throttling and other global settings?
409 2 Justin Sherrill
* Errata mailer
410
* smart proxy page/details
411 1 Brian Bouterse
412
413
414
h1.  Terminology
415
416
Candlepin Manifest - Defines Products, Subscriptions, and a Content Sets
417
Product - A collection of repositories. A repository can only belong to one product
418
Repository Set - Has a name, Label, and URL of the form:  /content/rhel/server/7/$RELVER/$BASEARCH/os/