Skip to content
This repository has been archived by the owner on Dec 7, 2022. It is now read-only.

First draft, definitions of Pulp's core concepts #3244

Merged
merged 2 commits into from Jan 16, 2018

Conversation

asmacdo
Copy link
Contributor

@asmacdo asmacdo commented Dec 14, 2017

This document is intended to be a base language so we can be internally consistent with how we write about and discuss Pulp.

@daviddavis
Copy link
Contributor

daviddavis commented Dec 15, 2017

I'm wondering if we should use the term "RepositoryVersion" given that we use "Repository" instead of "Repo". In Katello there was mixed usage of "Repo" and "Repository" and it was a huge pain. Thoughts?

Definitions
-----------

[``ContentUnit``, **plugin**, ``type``, ``Artifact``]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 to ContentUnit

@asmacdo
Copy link
Contributor Author

asmacdo commented Dec 15, 2017

@daviddavis +1 to RepositoryVersion.

``pulpcore`` is a generalized backend with a REST API and a plugin API. You will also need at
least one **plugin** to manage content. Each **plugin** defines at least one ``type`` of
``ContentUnit`` (like .rpm or .deb), which is the smallest set of data that can be managed by
Pulp. (The plural form of ``ContentUnit`` is a ``ContentUnits``, rather than Content or Units).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/is a/is/
Also this sentence probably doesn't need parentheses.

``ContentUnit`` (like .rpm or .deb), which is the smallest set of data that can be managed by
Pulp. (The plural form of ``ContentUnit`` is a ``ContentUnits``, rather than Content or Units).
Files that belong to a ``ContentUnit`` are called ``Artifacts``, and each ``ContentUnit`` can
have 0 or many ``Artifacts``. ``ContentUnits`` can share ``Artifacts``.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The last sentence is confusing to me. Maybe talking about it from the Artifact side would be an idea. Something like: An Artifact can be shared by multiple ContentUnits.

have 0 or many ``Artifacts``. ``ContentUnits`` can share ``Artifacts``.

[``Repository``, **add**, **remove**, **RepoVersion**]
``ContentUnits`` in Pulp are organized by their membership in ``Repositories``. You can **add**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The first two sentences need updating with repo versions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I changed this a little bit, (added "over time"), but that change doesn't address your concerns. My thinking was that we will still talk about "adding ContentUnits to a "Repository", and that RepositoryVersions are /how/ that is done.

[``Repository``, **add**, **remove**, **RepoVersion**]
``ContentUnits`` in Pulp are organized by their membership in ``Repositories``. You can **add**
or **remove** ``ContentUnits`` to/from a ``Repository``. Pulp provides deduplication of
``ContentUnits`` and ``Artifacts`` so you don’t need be concerned about **adding** a
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand the sentence starting from "so you don't ..."

or **remove** ``ContentUnits`` to/from a ``Repository``. Pulp provides deduplication of
``ContentUnits`` and ``Artifacts`` so you don’t need be concerned about **adding** a
``ContentUnit`` to too many ``Repositories``. ``Repositories`` are versioned, and you can
**add** or **remove** ``ContentUnits`` to a ``Repository`` by creating a new ``RepoVersion``
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They only associate with a RepoVersion, not a Repository anymore.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

and specifying the ``ContentUnits`` to **add** or **remove**.

[**upload**]
``ContentUnits`` can be created in Pulp manually. You will need to specify the ``Artifacts``
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In places where it says "you" maybe that should be "the user" and then the possessives that refer to them like "your" be "the user's", etc. If this is for language clarity the reader could be a variety of roles.

**added** to a ``Repository`` manually by creating a new ``RepoVersion``.

[**external source**, **sync**]
You can fetch ``ContentUnits`` and **add** them to your ``Repository`` by **syncing** with an
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar with the "user" language here, and similar throughout the doc.

Copy link
Member

@bmbouter bmbouter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@asmacdo I read it line for line, and it's going to be a good improvement for our docs. I left some feedback on it. See what you think of the ideas.

@asmacdo
Copy link
Contributor Author

asmacdo commented Jan 2, 2018

@bmbouter, let me know if these changes fit how you want to think/talk about Repositories and RepositoryVersions.

[**upload**]
``ContentUnits`` can be created in Pulp manually. Users specify the ``Artifacts`` that belong
to the ``ContentUnit`` and the **plugin** that defines the ``ContentUnit`` ``type``.
``Artifacts`` that are not already managed by Pulp should be **uploaded** to Pulp prior to
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about s/managed/known/

**external source**.)

[``hosted``, **metdata**, ``Publisher``, ``Publication``, ``Distribution``]
All ``ContentUnits`` that are managed by Pulp are **hosted** as part of the ``pulpcore`` REST
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/are/can be/

Also I think it's s/REST API/Content App/ because the content app is it's own distinct webservice from the REST API.


[``hosted``, **metdata**, ``Publisher``, ``Publication``, ``Distribution``]
All ``ContentUnits`` that are managed by Pulp are **hosted** as part of the ``pulpcore`` REST
API. A ``Publication`` referes to the **metadata** (flat files) for the set of
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Somehow this needs to also include Artifacts because a Publication is made of both PublishedMetadata and PublishedArtifact objects. Also the metadata does not entirely have to describe content, it is content, just not the kind that has an Artifact backing it. I'm not sure how to best bring this in.

``ContentUnits`` can be created in Pulp manually. Users specify the ``Artifacts`` that belong
to the ``ContentUnit`` and the **plugin** that defines the ``ContentUnit`` ``type``.
``Artifacts`` that are not already known by Pulp should be **uploaded** to Pulp prior to
creating a new ``ContentUnit``. ``ContentUnits`` are manually **added** to a
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/are/can be/

to the ``ContentUnit`` and the **plugin** that defines the ``ContentUnit`` ``type``.
``Artifacts`` that are not already known by Pulp should be **uploaded** to Pulp prior to
creating a new ``ContentUnit``. ``ContentUnits`` are manually **added** to a
``Repository`` manually by creating a new ``RepositoryVersion``.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and then on the next line. s/manually//

**external source**.)

[``hosted``, **metdata**, ``Publisher``, ``Publication``, ``Distribution``]
All ``ContentUnits`` that are managed by Pulp are **hosted** as part of the ``pulpcore``
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/are/can be/

[``hosted``, **metdata**, ``Publisher``, ``Publication``, ``Distribution``]
All ``ContentUnits`` that are managed by Pulp are **hosted** as part of the ``pulpcore``
Content App. **plugin** defined ``Publishers`` generate ``Publications``, which
refer to the **metadata** and ``Artifacts`` of the ``ContentUnits`` in a ``RepositoryVersion``
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How is **metadata** different from PublishedMetadata as a formal software object? I think introducing both PublishedMetadata and PublishedArtifacts may be good. What do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wanted to avoid defining any objects that aren't user facing, since they wont be semantically versioned.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about plugin writers as a form of user? Those two objects are in the plugin API so they would be semver governed by the plugin API version. If it's just for users that is OK too, but I figured it would be in the user guide, not the contributor guide.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm thinking of this as a contributor guide for how to write about user facing concepts. I am +1 on creating a second document in this style in the plugin writers guide

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me. I'm +1 to merge with the other small grammar fixes.

@dralley
Copy link
Contributor

dralley commented Jan 12, 2018

ok test

@asmacdo asmacdo merged commit 06df0bd into pulp:3.0-dev Jan 16, 2018
@daviddavis
Copy link
Contributor

👍

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
4 participants