Hi Shawn.

This seems to have implications for GUI users, beyond last-minute
i18n/l10n. In particular, the current Add Publisher dialog's
instructions are to "Specify the publisher name and URI" -- and you have
to specify a name in order to add the publisher. Given that you must now
also get the publisher name right, presumably this entry and the
corresponding instructions should be removed. Otherwise, you're just
setting the user up for a confusing experience.

Assuming these changes are to be included in 2010.03, can y'all break
both string and UI freeze to modify the dialog in question?

I presume that programmatically detecting now-erroneous names and
changing them every place it matters is not doable. But if I'm wrong
about that, doing so might ease the transition for users who added a
publisher under a no-longer-valid name and then wanted (or needed?) to
add a new origin. Otherwise, the only course of action is to remove and
then re-add the publisher using the correct name (right?) which leads to
orphaned packages.

--joanie

On Wed, 2010-02-03 at 15:20 -0600, Shawn Walker wrote:
> Greetings,
> 
> The following webrev contains fixes for the following issues:
> 
>    11522 pkg should require publisher prefix to match repository information
>    7156 client image api needs image creation interface
>    12744 update_publisher over-zealously testing publisher validity
>    14203 image-create usage doesn't mention mirror / origin options
> 
> webrev:
> http://cr.opensolaris.org/~swalker/pkg-11522/
> 
> ======================================================================
> Overview
> ======================================================================
> The pkg(1) command and the pkg.client.api now validate publisher 
> information provided by users against that (if available) provided by 
> publisher origin(s) (repositories).
> 
> In addition, users are no longer required to provide the publisher 
> prefix, only the repository URI when adding new publishers or creating 
> an image.
> 
> Note that this change does constitute somewhat of a flag day as 
> repository administrators that have not properly configured their 
> repositories may cause problems for their end-users.
> 
> Finally, validation is not enforced for existing publishers except when 
> adding new origins.
> 
> ======================
> pkg.client.api changes
> ======================
> Version 32:
> Incompatible with clients using versions 0-31.
> 
>      The ImageInterface class has changed as follows:
>          * The add_publisher and update_publisher methods now validate
>            the image's publisher configuration against the origins of
>            the publisher.  If any of the origins are found to not match,
>            an UnknownRepositoryPublishers exception will be raised.
> 
>      The pkg.client.api module has changed as follows:
>          * A new method named image_create has been added.  See 'pydoc
>            pkg.client.api' for details.
> 
>      The pkg.client.api_errors modules has changed as follows:
>          * UnknownRepositoryPublishers, RepoPubConfigUnavailable, and
>            UnknownErrors expections have been added for use by the
>            pkg.client.api.  API consumers are reminded that they should
>            catch all ApiException class exceptions, although catching
>            specific exception subclasses for case-by-case handling in
>            addition to that is acceptable.
> 
> ===================
> pkg(1) image-create
> ===================
> The image-create -p option now accepts either <prefix>=<uri> or <uri>.
> 
> If no prefix is provided, all publishers known to the provided 
> repository (indicated by the URI) will be added to the image during 
> creation along with description, origins, mirrors, alias, etc.
> 
> For example:
> 
> $ pfexec pkg image-create -p http://pkg.opensolaris.org/dev /path/to/image
> 
> ...would create an image with a publisher that has the following 
> information:
> 
>      {
>        "alias": "",
>        "name": "opensolaris.org",
>        "packages": [],
>        "repositories": [
>          {
>            "collection_type": "core",
>            "description": "This repository serves the currently 
> in-development release\nof OpenSolaris.  For production-quality release 
> bits, see\n<a href=\"http://pkg.opensolaris.org/release\";>the Release 
> repository</a>.\n<p>\nTo switch your system to the in-development 
> release of OpenSolaris\n(the \"dev\" release), you can issue the 
> following commands:\n<pre>\n$ pfexec pkg set-publisher -O 
> http://pkg.opensolaris.org/dev opensolaris.org\n$ pfexec pkg 
> image-update\n</pre>\n<p>\nFor more about OpenSolaris:\n<ul>\n<li>Visit 
> <a href=\"http://www.opensolaris.com\";>opensolaris.com</a>\n<li>Visit <a 
> href=\"http://www.opensolaris.org\";>opensolaris.org</a>\n<li><a 
> href=\"http://www.opensolaris.com/get/index.jsp\";>Download ISO 
> Images</a>\n</ul>\n<p>Note that when you see a link in a list of 
> packages like this:\n<blockquote>\n<a class=\"p5i\"\ntitle=\"Launch the 
> Package Manager and install this 
> package\"\nhref=\"../p5i/0/gcc-dev.p5i\">Install 
> gcc-dev</a>\n</blockquote>\nyou can click it (if you are on an 
> OpenSolaris 2009.06 or later system)\nto launch the package manager and 
> install the package.\n</p>",
>            "legal_uris": [
>              "http://www.opensolaris.org/os/copyrights/";,
>              "http://www.opensolaris.org/os/tou/";,
>              "http://www.opensolaris.org/os/trademark/";
>            ],
>            "mirrors": [],
>            "name": "OpenSolaris Development Release Packaging Repository",
>            "origins": [
>              "http://pkg.opensolaris.org/dev/";
>            ],
>            "refresh_seconds": 14400,
>            "registration_uri": "",
>            "related_uris": [
>              "http://pkg.opensolaris.org/contrib";
>            ]
>          }
>        ]
>      }
> 
> 
> If a prefix is provided, it will be required to match the repository's 
> publisher configuration information.  As an example, if the user 
> attempted this:
> 
> $ pfexec pkg image-create -p dev=http://pkg.opensolaris.org/dev 
> /path/to/image
> 
> ...the user would receive this error:
> 
> pkg image-create:
> The repository at the location listed below does not contain
> package data for dev; only opensolaris.org:
> 
> http://pkg.opensolaris.org/dev
> 
> This is either because the repository location that was provided
> is not valid, or because the provided publisher information does
> not match that known by the repository.
> 
> ====================
> pkg(1) set-publisher
> ====================
> The set-publisher subcommand now validates publisher configuration as 
> image-create does above when adding publishers, or adding new origin(s) 
> to an existing publisher.
> 
> The set-publisher subcommand has a new -p option that accepts a 
> repository URI that can be used for auto-configuration of publishers. 
> It works the same as the image-create -p option, with the exception that 
> existing publishers found in the retrieved publisher configuration 
> information will be updated if the provided URI is already listed in 
> their origins.
> 
> When adding new publishers using -p, the set-publisher command will tell 
> the user what publishers were added and updated:
> 
> $ pfexec pkg set-publisher -p http://pkg.opensolaris.org/dev --all
> pkg set-publisher:
>    Added publisher(s): opensolaris.org
> 
> or
> 
> $ pfexec pkg set-publisher -p http://pkg.opensolaris.org/dev opensolaris.org
> pkg set-publisher:
>    Added publisher(s): opensolaris.org
> 
> If a user wanted to update the 'opensolaris.org' publisher with the 
> newest available configuration information (origins and mirrors), they 
> would execute the same command:
> 
> $ pfexec pkg set-publisher -p http://pkg.opensolaris.org/dev --all
> pkg set-publisher:
>    Updated publisher(s): opensolaris.org
> 
> or
> 
> $ pfexec pkg set-publisher -p http://pkg.opensolaris.org/dev opensolaris.org
> pkg set-publisher:
>    Updated publisher(s): opensolaris.org
> 
> This would *add* any new origins or mirrors found, but would not remove 
> any that already exist.  It will also update the client's copy of the 
> repository's description, refresh_seconds, legal_uris, collection_type, 
> registration_uri, and related_uris.  Finally, it will set the 'alias' 
> for the publisher if the user has not configured one already.
> 
> Cheers,


_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to