doc/catalog-v1.txt
author Edward Pilatowicz <edward.pilatowicz@oracle.com>
Mon, 16 Sep 2013 21:26:31 -0700
changeset 2945 24196b483cc6
parent 1431 62b6033670e4
permissions -rw-r--r--
17461187 packagemanager displays unexpected error message
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     1
pkg(5): image packaging system
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     2
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     3
CATALOG FORMAT AND CACHING PROPOSAL
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     4
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     5
1.  Overview
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     6
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     7
    The pkg(5) server and client catalogs currently provides a summary
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     8
    view of the packages provided by a repository: the FMRIs of each
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     9
    package, the last time the set of available packages changed, and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    10
    the total number of packages.  The server uses this information
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    11
    for publication checks, to fulfill client requests, for search
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    12
    indexing and analysis, and to enable browser-based access to the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    13
    repository via the BUI (Browser User Interface).  pkg(5) clients
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    14
    use this information to determine what packages are available, to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    15
    validate user input, and to fulfill packaging operation requests.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    16
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    17
1.1  History
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    18
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    19
    As development of the Image Packaging System has progressed, both
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    20
    the server and client have increasingly required access to more
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    21
    packaged metadata as fixes and various improvements have been
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    22
    implemented.  This has resulted in increased demand on server and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    23
    client system resources when analyzing package metadata, and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    24
    increased processing times as well.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    25
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    26
    To address catalog performance issues, a client-side unified
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    27
    catalog cache was implemented, and initially contained all known
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    28
    package stems from the set of publishers defined within the image
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    29
    configuration.  The caching mechanism was then replaced, using a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    30
    Python dict structure designed for efficient lookups of package
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    31
    information by stem or FMRI and providing an ordered list of
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    32
    versions, that was then serialized to disk.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    33
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    34
    Recently, the caching was revised to use a custom, delta-encoded
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    35
    text format that avoided object serialization as that created an
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    36
    implicit dependency on object versions and definitions, as well as
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    37
    significant overhead in the on-disk footprint.  To improve package
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    38
    metadata performance, a new cache format was created that factored
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    39
    package manifests by the types of actions contained within, and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    40
    then stored each type of action in a separate file for each
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    41
    manifest.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    42
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    43
1.2  Challenges
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    44
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    45
    Despite past improvements, significant performance improvements
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    46
    are still needed for both the server and client when processing
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    47
    and analyzing package metadata.  The work done so far has also
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    48
    only benefited the client, leaving server performance behind.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    49
    Specifically, the underlying catalog data, caching mecahnisms,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    50
    and catalog retrieval operations suffer from the following
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    51
    issues:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    52
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    53
    - the catalog format used for the server and client is not
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    54
      consistent and the server uses local time instead of UTC
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    55
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    56
    - the client does not maintain a 1:1 copy of the server's catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    57
      and attributes making it difficult to verify its integrity and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    58
      complicates the logic needed to obtain updates
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    59
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    60
    - the caching mechanisms implemented are not granular enough,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    61
      causing some operations to run slower than necessary as more
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    62
      information than is needed is loaded and processed
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    63
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    64
    - no efficient lookup mechanism exists for some of the metadata,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    65
      causing operations such as dependency calculation to require a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    66
      linear scan and retrieval of manifests
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    67
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    68
    - the existing caching mechanisms require clients to retrieve
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    69
      manifests for all known packages to be able to perform summary
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    70
      listings of available packages (at least 65 MiB for a new build
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    71
      of OpenSolaris) -- which is especially harmful to GUI clients
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    72
      such as packagemanager(1)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    73
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    74
    - the existing caching mechanisms do not provide the information
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    75
      needed to determine (ahead of time) what package manifests need
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    76
      to be retrieved during packaging operations, which leaves pkg(5)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    77
      clients unable to provide sufficient feedback to the user during
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    78
      plan creation such as number of bytes to be transferred, time
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    79
      estimates, etc.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    80
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    81
    - the catalog operation and caching mechanisms offered by the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    82
      depot server are not extensible, and cannot accommodate new
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    83
      metadata that may be needed to perform client operations
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    84
      without a client and server revision
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    85
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    86
    - the catalog and caching mechanisms do not account for
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    87
      future localization needs
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    88
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    89
1.3  Goals
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    90
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    91
    So then, the changes proposed within this document have the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    92
    following goals:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    93
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    94
    - unification of the server and client catalog format and code
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    95
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    96
    - simplification of catalog update and retrieval mechanisms
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    97
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    98
    - improved granularity and transparency in caching mechanisms
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    99
      allowing operations to only retrieve the information they need
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   100
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   101
    - reduction of resource requirements and processing time forserver
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   102
      and client
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   103
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   104
    - increase of available metadata before long-running package
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   105
      operations to enable improved progress and user feedback
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   106
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   107
    - improved extensibility of the catalog depot operation and the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   108
      caching mechanisms used by the client
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   109
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   110
    - unification and implementation of caching mechanisms and code
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   111
      for client and server
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   112
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   113
2.  Proposed Changes
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   114
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   115
    The changes needed to accomplish the goals listed in section 1.3
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   116
    are grouped below by the type of change.  It should be noted that
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   117
    what is described in this document is dependent on an upcoming image
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   118
    and repository format versioning proposal since these changes will
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   119
    require a change to the structure of both images and repositories.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   120
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   121
2.1 Catalog Format Changes
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   122
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   123
2.1.1  Current Catalog Format
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   124
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   125
    To better understand the proposed changes, it may first be helpful
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   126
    to understand the current catalog format and how it is composed.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   127
    Currently, the catalog could be viewd as being composed of three
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   128
    files:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   129
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   130
    - attrs
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   131
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   132
        The attrs file contains metadata about the catalog.  The
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   133
        server and client attrs file are text/plain, and currently
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   134
        have the following content:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   135
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   136
         S Last-Modified: 2009-06-23T07:58:35.686485
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   137
         S prefix: CRSV
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   138
         S npkgs: 40802
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   139
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   140
        The client adds this content:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   141
         S origin: <repository_uri>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   142
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   143
        The Last-Modified value is an ISO-8601 date and time in server
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   144
        local time (not UTC).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   145
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   146
    - catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   147
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   148
        The server catalog file currently contains entries of this
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   149
        format:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   150
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   151
        <type> <fmri><newline>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   152
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   153
        Where type can be 'V' (version), 'C' (critical; not used), or
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   154
        'R' (renamed).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   155
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   156
        As a special exception, the format of 'R' entries is:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   157
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   158
        R <src_stem> <src_version> <dest_stem> <dest_version><newline>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   159
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   160
        If a destination package is not provided for 'R', then 'NULL'
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   161
        is used for the destination values.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   162
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   163
        Examples:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   164
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   165
        C pkg:/[email protected],5.11-0.111:20090507T161015Z
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   166
        V pkg:/[email protected],5.11-0.111:20090508T161015Z
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   167
        R foo 1.0:20090508T161015Z bar 1.0:20090509T161015Z
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   168
        R baz 1.0:20090508T161015Z NULL NULL
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   169
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   170
        The client catalog file contains entries of this format:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   171
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   172
        <type> pkg <fmri_stem> <fmri_version><newline>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   173
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   174
        As a special exception, the format of 'R' entries is:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   175
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   176
        R <src_stem> <src_version> <dest_stem> <dest_version><newline>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   177
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   178
        If a destination package is not provided for 'R', then 'NULL'
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   179
        is used for the destination values.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   180
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   181
        Example:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   182
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   183
        V pkg foo 0.5.11,5.11-0.111:20090508T161015Z
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   184
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   185
    - update log
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   186
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   187
        While not strictly a part of the catalog, the update logs serve
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   188
        as a record of changes to the catalog allowing clients to otbain
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   189
        incremental updates to a catalog instead of retrieving the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   190
        entire catalog each time.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   191
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   192
        It only exists on the server, and contains entries of this
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   193
        format:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   194
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   195
        <update_type><type><space><fmri><newline>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   196
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   197
        Where 'update_type' can be '+' (there were comments at one
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   198
        time referring to a '-' operation, but they were removed and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   199
        the code for it was never implemented).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   200
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   201
        Where 'type' can be 'V' (version), 'C' (critical; not used),
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   202
        or 'R' (renamed).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   203
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   204
        As a special exception, the format of 'R' entries is:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   205
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   206
        R <src_stem> <src_version> <dest_stem> <dest_version><newline>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   207
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   208
2.1.2  Proposed Catalog Format
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   209
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   210
    To accomplish the goals listed in section 2.1, a new catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   211
    format will be adopted.  This format will be used by the client
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   212
    to store catalog data locally, regardless of the format used by
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   213
    the repository (e.g. the repository only provides older catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   214
    format).  All data is assumed to be encodable using Unicode as
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   215
    the JSON format specification requires this.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   216
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   217
    The new catalog format splits the contents of the catalog into
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   218
    multiple parts, per-locale, but treats them as a unified set.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   219
    That is, all of the parts have a common base, but can easily be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   220
    merged at load time if access to multiple parts is needed.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   221
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   222
    The catalog will be composed of the following files:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   223
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   224
    - catalog.attrs
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   225
        This file will contain a python dict structure serialized in
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   226
        JSON (JavaScript Object Notation) format.  The metadata within
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   227
        is used to describe the catalog and its contents using the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   228
        following attributes:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   229
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   230
        _SIGNATURE:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   231
            An optional dict of digest and/or cryptograhic values which
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   232
            can be used by clients to verify the integrity of the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   233
            catalog.attrs data.  Each key should represent the name of
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   234
            the signature or digest used, and each value the signature
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   235
            itself.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   236
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   237
        created:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   238
            The value is an ISO-8601 'basic format' date in UTC time
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   239
            indicating when the catalog was created.  This value is
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   240
            provided by the server.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   241
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   242
        last-modified:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   243
            The value is an ISO-8601 'basic format' date in UTC time
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   244
            indicating when the catalog was last updated.  This value
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   245
            is provided by the server.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   246
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   247
        package-count:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   248
            An integer value indicating the total number of unique
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   249
            FMRI stems in the catalog.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   250
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   251
        package-version-count:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   252
            An integer value indicating the total number of unique
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   253
            FMRI versions in the catalog.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   254
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   255
        parts:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   256
            A dict of available catalog parts.  This is to enable
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   257
            clients to quickly determine what locale-specific catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   258
            data might be available to them.  Each entry contains the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   259
            date and time a part was created and last modified.  It
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   260
            may also contain digest signature entries for the part (if
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   261
            available) so that clients can verify parts after applying
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   262
            incremental updates.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   263
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   264
        updates:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   265
            A dict of available catalog updates.  Each entry corresponds
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   266
            to the filename of an update log named after the time the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   267
            update occurred using an ISO-8601 'reduced accuracy basic
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   268
            format'.  Each entry also contains a last-modified date in
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   269
            ISO-8601 basic format to allow clients to determine when an
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   270
            update log was last changed without checking the repository.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   271
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   272
        version:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   273
            An integer value representing the version of the structure
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   274
            used within the attrs, update log, and catalog part files.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   275
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   276
        Example:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   277
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   278
        {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   279
            "_SIGNATURE": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   280
              "sha-1": "8f5c22fd8218f7a0982d3e3fdd01e40671cb9cab"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   281
            },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   282
            "created": "20050614T080000.234231Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   283
            "last-modified": "20090508T161025.686485Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   284
            "package-count": 40802,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   285
            "package-version-count": 1706,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   286
            "parts": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   287
              "catalog.base.C": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   288
                "last-modified": "20090508T161025.686485Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   289
                "signature-sha-1": "9b37ef267ae6aa8a31b878aad4e9baa234470d45",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   290
              },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   291
              "catalog.dependency.C": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   292
                "last-modified": "20090508T161025.686485Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   293
                "signature-sha-1": "0c896321c59fd2cd4344fec074d55ba9c88f75e8",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   294
              },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   295
              "catalog.summary.C": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   296
                "last-modified": "20090508T161025.686485Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   297
                "signature-sha-1": "b3a6ab53677c7b5f94c9bd551a484d57b54ed6f7",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   298
              },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   299
              "catalog.summary.FR": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   300
                "last-modified": "20081002T080903.235212Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   301
                "signature-sha-1": "d2b6cb03677c725f94c9ba551a454d56b54ea2f8",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   302
              },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   303
            },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   304
            "updates": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   305
              "update.20081002T08Z.C": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   306
                "last-modified": "20081002T080903.235212Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   307
                "signature-sha-1": "a2b6cb03277c725a94c9ba551a454d56b54ea2f8",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   308
              },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   309
              "update.20090508T16Z.C": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   310
                "last-modified": "20090508T161025.686485Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   311
                "signature-sha-1": "c2b6ca03473c725f94c8ba201a454d56b54ea2f8",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   312
              },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   313
            },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   314
            "version": 1,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   315
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   316
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   317
    - catalog.<part_name>.<locale_name>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   318
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   319
        Each part of the catalog will contain a python dict structure
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   320
        serialized in JSON format.  <locale_name> is an OpenSolaris
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   321
        system locale name, and should be 'C' if the file applies to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   322
        all locales.  Version entries for each package stem are kept
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   323
        in ascending version order to allow fast lookups by the client
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   324
        and avoid sort overhead on load.  Also note that any top-level
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   325
        entry key in the structure starting with '_' will be treated
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   326
        as metadata related to the catalog or version entry and must
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   327
        be ignored unless the client can use it.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   328
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   329
        Finally, each catalog entry can also contain an optional set
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   330
        of digest and signature key/value pairs that can be used to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   331
        verify the content of the related package manifest.  Clients
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   332
        must ignore any key/value pairs that are unknown to them within
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   333
        the structure.  The catalog structure can be described as
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   334
        follows:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   335
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   336
        {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   337
          "<optional-signature-dict": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   338
            "<signature-name>": "<signature-value>",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   339
          },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   340
          "<publisher-prefix>": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   341
            "<FMRI package stem>": [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   342
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   343
                "version": <FMRI version string>,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   344
                "<optional-actions>": <optional-actions-data>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   345
                "<optional-signature-name>": "<signature-value>",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   346
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   347
            ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   348
          }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   349
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   350
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   351
    Initially, the server will offer the following catalog 'parts'.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   352
    Each has its content based on a tradeoff between memory usage,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   353
    load times, and bandwidth needs which depend on the client being
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   354
    used to perform packaging operations or the operation being
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   355
    performed.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   356
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   357
    - catalog.base.C
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   358
        This catalog part contains the FMRIs of the packages that the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   359
        repository contains, and an optional digest value that can be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   360
        used for verifying the contents of retrieved manifests.  Loading
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   361
        just this content is useful when performing basic listing opera-
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   362
        tions using the cli, or when simply checking to see if a given
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   363
        package FMRI is valid.  Note that since this information is com-
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   364
        mon to all locales, this part of the catalog is only offered for
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   365
        the 'C' locale.  An example of its contents is shown below:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   366
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   367
        {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   368
          "_SIGNATURE": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   369
            "sha-1": "9b37ef267ae6aa8a31b878aad4e9baa234470d45",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   370
          },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   371
          "opensolaris.org":{
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   372
            "SUNWipkg":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   373
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   374
                "version":"0.5.11,5.11-0.117:20090623T135937Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   375
                "signature-sha-1": "596f26c4fc725b486faba089071d2b3b35482114"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   376
              },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   377
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   378
                "version":"0.5.11,5.11-0.118:20090707T220625Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   379
                "signature-sha-1": "ab6f26c4fc725b386faca089071d2b3d35482114"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   380
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   381
            ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   382
            "SUNWsolnm":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   383
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   384
                "version":"0.5.11,5.11-0.117:20090623T144046Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   385
                "signature-sha-1": "fe6f26c4fc124b386faca089071d2b3a35482114"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   386
              },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   387
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   388
                "version":"0.5.11,5.11-0.118:20090707T224654Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   389
                "signature-sha-1": "696f26c4fc124b386facb089071d2b3f35482114"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   390
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   391
            ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   392
          }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   393
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   394
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   395
    - catalog.dependency.C
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   396
        This catalog part contains the FMRIs of the packages that the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   397
        repository contains, any 'depend' actions, and any 'set' actions
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   398
        for facets or variants.  This information is intended to be used
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   399
        during dependency calculation by install, uninstall, etc.  It is
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   400
        anticipated that package size summary information, and actions
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   401
        for set pkg.renamed and pkg.obsolete will be stored in this part
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   402
        as well when they become available.  Note that since this infor-
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   403
        mation is common to all locales, this part of the catalog is
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   404
        only offered for the 'C' locale.  An example of its contents is
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   405
        shown below:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   406
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   407
        {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   408
          "_SIGNATURE": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   409
            "sha-1": "0c896321c59fd2cd4344fec074d55ba9c88f75e8",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   410
          },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   411
          "opensolaris.org":{
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   412
            "SUNWdvdrw":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   413
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   414
                "version":"5.21.4.10.8,5.11-0.108:20090218T042840Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   415
                "actions":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   416
                  "set name=variant.zone value=global value=nonglobal",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   417
                  "set name=variant.arch value=sparc value=i386",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   418
                  "depend [email protected] type=require",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   419
                  "depend [email protected] type=require",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   420
                  "depend [email protected] type=require"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   421
                ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   422
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   423
            ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   424
            "SUNWthunderbirdl10n-extra":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   425
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   426
                "version":"0.5.11,5.11-0.75:20071114T205327Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   427
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   428
            ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   429
          }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   430
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   432
    - catalog.summary.<locale_name>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   433
        This catalog part contains the FMRIs of the packages that the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   434
        repository contains and any 'set' actions (excluding those for
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   435
        facets or variants).  This information is intended to be used
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   436
        primarily by GUI clients such as packagemanager(1), or the BUI
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   437
        (Browser UI) provided by pkg.depotd(1m) for quick, efficient
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   438
        access to package metadata for listing.  An example is shown
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   439
        below:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   440
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   441
        {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   442
          "_SIGNATURE": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   443
            "catalog-sha-1": "b3a6ab53677c7b5f94c9bd551a484d57b54ed6f7",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   444
          },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   445
          "opensolaris.org":{
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   446
            "SUNWdvdrw":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   447
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   448
                "version":"5.21.4.10.8,5.11-0.108:20090218T042840Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   449
                "actions":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   450
                  "set name=description value=\"DVD creation utilities\"",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   451
                  "set name=info.classification value=org.opensolaris.category.2008:System/Media",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   452
                ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   453
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   454
            ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   455
            "SUNWthunderbirdl10n-extra":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   456
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   457
                "version":"0.5.11,5.11-0.75:20071114T205327Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   458
                "actions":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   459
                  "set name=description value=\"Thunderbird localization - other 15 lang\"",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   460
                  "set name=srcpkgs value=SUNWthunderbirdl10n-extra"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   461
                ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   462
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   463
            ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   464
          }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   465
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   466
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   467
    - update.<logdate>.<locale_name>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   468
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   469
        This file will contain a python dict structure serialized in
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   470
        JSON (JavaScript Object Notation) format.  Where <logdate> is
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   471
        a UTC date and time in  ISO-8601 'reduced accuracy basic
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   472
        format'. <locale_name> is an OpenSolaris system locale name,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   473
        and should be 'C' if the update log applies to all locales.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   474
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   475
        The structure of catalog update files is similar to that of
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   476
        of catalog files, with a few exceptions.  First, each version
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   477
        entry contains additional elements indicating the catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   478
        operation and the time of the operation.  Second, each entry
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   479
        also contains a set of dicts keyed by catalog part name
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   480
        indicating which catalog parts the package was added to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   481
        contents of each of these dicts is the exact contents of the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   482
        package's catalog part entry (excluding version).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   483
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   484
        The supported types (<op-type> in the example below) of catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   485
        operations are:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   486
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   487
        'add'       Indicates that the corresponding FMRI and metadata
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   488
                    (if present) has been added to the catalog.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   489
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   490
        'remove'    Indicates that the corresponding FMRI has been
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   491
                    removed from the catalog.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   492
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   493
        The structure can be described as follows:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   494
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   495
        {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   496
          <optional-signature-or-signature-dict>: {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   497
            <signature-or-signature-name>: <signature-or-signature-value>,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   498
          },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   499
          <publisher-prefix>: {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   500
            <FMRI package stem>: [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   501
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   502
                "op-type": <type-of-operation>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   503
                "op-time": <ISO-8601 Date and Time>
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   504
                "version": <FMRI version string>,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   505
                "<catalog.part.name>": <catalog-type-metadata>,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   506
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   507
            ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   508
          }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   509
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   510
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   511
        An example update log might consist of the following:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   512
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   513
        {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   514
          "_SIGNATURE": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   515
            "sha-1": "0c896321c59fd2cd4344fec074d55ba9c88f75e8",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   516
          },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   517
          "opensolaris.org":{
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   518
            "SUNWthunderbirdl10n-extra":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   519
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   520
                "op-type": "remove",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   521
                "op-time": "20090218T042838Z"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   522
                "version":"0.5.11,5.11-0.75:20071114T205327Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   523
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   524
            ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   525
            "SUNWdvdrw":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   526
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   527
                "op-type": "add",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   528
                "op-time": "20090524T042841Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   529
                "version":"5.21.4.10.8,5.11-0.111:20090524T042840Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   530
                "catalog.dependency.C": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   531
                  "actions": [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   532
                    "depend [email protected] type=require",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   533
                    "depend [email protected] type=require",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   534
                    "depend [email protected] type=require"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   535
                  ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   536
                },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   537
                "catalog.summary.C": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   538
                  "actions": [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   539
                    "set name=description value=\"DVD creation utilities\"",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   540
                    "set name=info.classification value=org.opensolaris.category.2008:System/Media",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   541
                  ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   542
                ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   543
                "signature-sha-1": "fe6f26c4fc124b386faca089071d2b3a35482114",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   544
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   545
            ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   546
          }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   547
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   548
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   549
    Please note that the digest and cryptographic information is
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   550
    optional since older repositories won't have the information and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   551
    some users of the depot software may choose to not provide it.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   552
    For a detailed discussion on the choice of data format and a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   553
    performance analysis, see section 3.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   554
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   555
2.2  Server Changes
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   556
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   557
    To enable clients to retrieve the new catalog files and incremental
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   558
    updates to them, the following changes will be made:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   559
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   560
    - The new catalog files will be stored in the <repo_dir>/catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   561
      directory using the filenames described in section 2.1.2.  Any
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   562
      existing catalog files will be converted to the new format upon
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   563
      load (using writable-root if present) and the old ones removed
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   564
      (unless readonly operation is in effect).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   565
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   566
    - Operations that modify the catalog file will be changed to write
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   567
      out all of the new catalogs only; the version 0 catalog will no
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   568
      longer be stored or used.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   569
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   570
    - The depot server will be changed to offer an additional catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   571
      operation "/catalog/1/" which will be added to the output of the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   572
      "/versions/0/" operation as well.  It will provide a simple GET-
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   573
      based HTTP/1.1 interface for retrieving catalog and update log
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   574
      files from the server.  It will not require or use any headers
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   575
      other than those normally present within a standard HTTP/1.1
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   576
      transaction.  However, the client api will continue to provide
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   577
      the uuid, intent, and user agent headers that are provided today
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   578
      for the existing "/catalog/0/" operation.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   579
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   580
    - The existing "/catalog/0/" operation will continue to be offered
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   581
      by the depot server for compatibility with older clients.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   582
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   583
    - The depot server will be changed to perform a simple sanity check
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   584
      when starting to verify that the packages in the catalog are
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   585
      physically present in the repository and that the catalog attrs
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   586
      files match the catalog files.  Likewise, the update logs will
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   587
      be checked to verify that they are valid for the catalogs.  If
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   588
      any of these files are found to be not valid, a warning will be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   589
      logged and the catalog files rewritten (using writable-root if
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   590
      applicable).  In addition, any of the corrections made will
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   591
      result in corresponding update log entries so that incremental
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   592
      updates will not be broken for existing clients.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   593
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   594
2.3 Client Changes
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   595
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   596
    To take advantage of the new catalog format, and to improve the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   597
    performance of clients, a number of changes will need to be made
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   598
    to the pkg.client.api and its supporting classes.  All of the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   599
    changes proposed here should be transparent to client api
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   600
    consumers.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   601
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   602
2.3.1  Image Changes
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   603
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   604
    - The image object, upon initialization, will remove the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   605
      /var/pkg/catalog directory and its contents if possible.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   606
      If this cannot be done (due to permissions), the client
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   607
      will continue on.  If it can be removed, a new directory
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   608
      named /var/pkg/publisher be created, and publisher objects
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   609
      will be told to store and retrieve their metadata from it.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   610
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   611
    - Publisher objects will store their catalog data within the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   612
      directory <meta_root>/<prefix>/catalog/.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   613
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   614
    - Any functions contained within the image class for the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   615
      direct storage, retrieval, updating, etc. of publisher
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   616
      metadata will be moved to the pkg.client.publisher and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   617
      Catalog classes.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   618
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   619
    - A new "Catalog" object reference will be added to the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   620
      image class, which will be used to allow the api access
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   621
      to catalog metadata.  This object will allow callers to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   622
      ask for a specific set of catalog data for an operation
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   623
      (where the allowed sets match the names of the catalogs
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   624
      described in section 2.1.2).  The data will then be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   625
      retrieved and stored for usage by callers as needed.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   626
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   627
    - The existing catalog caching mechanism will be removed
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   628
      completely as it has been superseded by the new catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   629
      format.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   630
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   631
    - For performance reasons, the client api will also store
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   632
      versions of each of the catalogs proposed that only
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   633
      contain entries for installed FMRIs to accelerate common
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   634
      client functions such as info, list, uninstall, etc. This
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   635
      change will also result in the obsoletion of the current
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   636
      /var/pkg/state directory and /var/pkg/pkg/<stem>/<ver>/
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   637
      installed files, which will be removed and converted
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   638
      during the image initialization process if possible.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   639
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   640
    - All api functions will be changed to retrieve the catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   641
      data they need instead of depending upon api consumers to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   642
      do so.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   643
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   644
2.3.2  Catalog Retrieval and Update Changes
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   645
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   646
    - If a repository only offers version 0 of the catalog format,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   647
      then the client API will retrieve it, but transform and store
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   648
      the catalog in version 1 format using the times the server
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   649
      provides.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   650
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   651
    - If version 1 catalog data is not available, the client api will
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   652
      fallback to retrieving catalog metadata by retrieving package
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   653
      manifests (as it does today).  This will be transparent to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   654
      clients.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   655
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   656
    - When checking for catalog updates, the api(s) will follow this
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   657
      process for version 1 catalogs when determining if a full or
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   658
      incremental update should be performed for each catalog in the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   659
      image:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   660
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   661
      * If the repository now offers a version 1 catalog, but did not
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   662
        do so previously, a full catalog retrieval will be performed.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   663
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   664
      * A conditional retrieval of the catalog.attrs file will be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   665
        performed using the last-modified date contained within it.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   666
        If a 304 (or not modififed status) is returned, then the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   667
        catalog will be skipped during the update process.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   668
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   669
      * The resulting file will then be loaded and the integrity of the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   670
        attrs file verified by omitting the '_SIGNATURE' portion of the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   671
        data structure and using the information that was present within
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   672
        to verify the integrity of the attrs file.  If the integrity
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   673
        check fails, a transport exception will be raised.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   674
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   675
      * If the attrs file was retrieved successfully, it will be checked
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   676
        as follows:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   677
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   678
        - If the created date in the retrieved attrs file does not
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   679
          match the stored attrs file, a full catalog retrieval will be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   680
          performed as the catalog has been rebuilt.  In addition, a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   681
          warning will be provided to the client that there may be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   682
          something wrong with the repository (packages may be missing,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   683
          etc.).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   684
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   685
        - If the created date matches, then the version in the new attrs
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   686
          file will be compared to the original, if they do not match a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   687
          full catalog retrieval will be performed as the format of the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   688
          catalog has changed (unless the client is unable to parse that
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   689
          format in which case an error will be raised).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   690
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   691
        - If the version was valid, then the last modified date in the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   692
          new catalog.attrs file will be compared to the original attrs
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   693
          file.  If the original attrs date is newer, then a full
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   694
          catalog retrieval will be performed and the user will be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   695
          warned that there may be something wrong with the repository
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   696
          (packages may no longer be available, etc.).  If the last
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   697
          modified date in the original attrs file is the same as the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   698
          new attrs file, then no updates are available and the catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   699
          will be skipped.  If the original attrs last modified date is
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   700
          older than the new attrs last modified date, then the 'update-
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   701
          logs' property will be checked to see if there are incremental
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   702
          updates available.  
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   703
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   704
        - If the update-logs property is empty, a full catalog retrieval
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   705
          will be performed with the assumption that the repository has
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   706
          intentionally discarded all of its incremental update
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   707
          information.  If the oldest update log listed in the new attrs
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   708
          file is newer than the last modified date of the original
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   709
          attrs file, then this client has not performed an incremental
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   710
          for a period long enough that the repository no longer offers
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   711
          incremental updates for their version of the catalog, and a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   712
          full catalog retrieval will be performed.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   713
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   714
        - Finally, if all of the above was successful, the api will then
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   715
          start the incremental update process.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   716
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   717
    - When attempting to determine what incremental catalog updates
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   718
      for version 1 catalogs are available, and the repository offers
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   719
      version 1 catalogs, the client api(s) will use the following
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   720
      process:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   721
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   722
        * The modified date and time of the update log the client last
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   723
          retrieved will compared against the corresponding entry in
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   724
          catalog.attrs.  If it has not been modified, the update log
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   725
          will be skipped.  Otherwise it will be retrieved, and added
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   726
          to the incremental update queue. This is necessary since
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   727
          update logs are per-hour and a change may have occurred since
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   728
          the last time the update log was retrieved.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   729
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   730
        * The api will then retrieve any remaining update logs listed in
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   731
          the catalog.attrs file that have a <logdate> newer than the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   732
          last time the client's local copy of the catalog was updated.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   733
          Each will be added to the update queue after retrieval.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   734
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   735
        * Each update log file will then loaded and verified by omitting
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   736
          the '_SIGNATURE' portion of the structures and using the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   737
          information that was present within it to verify the integrity
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   738
          of the update log.  If the integrity check fails, a transport
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   739
          exception will be raised.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   740
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   741
    - When applying the queued catalog updates, the client api will
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   742
      use this process for each update log:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   743
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   744
        * each corresponding catalog part present in the image will be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   745
          loaded, and then any update log entries newer than the last
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   746
          modified date of the catalog (based on op-time) will be
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   747
          applied to the catalog as dicated by op-type
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   748
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   749
        * if at any point, an update log entry cannot be applied as
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   750
          directed, then a full catalog retrieval will be forced, and
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   751
          the user will be warned that something may be wrong with the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   752
          repository (missing packages, etc.)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   753
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   754
        * if the update log is the last in the queue for a given set of
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   755
          catalogs, then all previous ones will be removed as they are
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   756
          no longer needed
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   757
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   758
    - When attempting to verify the integrity of a full catalog part
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   759
      retrieval, the api will use this process:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   760
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   761
      * The catalog parts will be loaded into memory and the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   762
        '_SIGNATURE' portion of the data structure removed.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   763
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   764
      * The api will then check the catalog.attrs file for digest
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   765
        and/or cryptographic information related to the catalog.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   766
        If the information is present, it will then be used to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   767
        verify the integrity of the retrieved catalog parts.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   768
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   769
3.  Appendix
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   770
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   771
3.1  Overview
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   772
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   773
    During the development of this proposal, a number of different
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   774
    approaches to the storage and retrieval of catalog data were
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   775
    considered.  Specifically, the following formats were considered
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   776
    and/or evaluated:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   777
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   778
    - manifest
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   779
        A pure "manifest-style" format similar to the existing package
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   780
        manifest.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   781
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   782
    - JSON
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   783
        The portable JavaScript Object Notation-based format.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   784
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   785
    Size and performance characteristics for each of these formats can
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   786
    be found in section 3.3.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   787
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   788
3.2  Evaluations
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   789
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   790
3.2.1  manifest-style format evaluation
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   791
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   792
    Initially, the "manifest-style" format seemed promising from a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   793
    performance and disk footprint standpoint when compared to using
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   794
    JSON.  A few variations of this format were attempted, and examples
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   795
    of this can be seen below:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   796
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   797
    - variation 1
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   798
        pkg://opensolaris.org/[email protected],5.11-0.86:20080422T230436Z [email protected],[email protected]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   799
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   800
    - variation 2
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   801
        pkg://opensolaris.org/[email protected],5.11-0.86:20080422T230436Z
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   802
        depend fmri=pkg:/[email protected] type=require
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   803
        depend fmri=pkg:/[email protected] type=require
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   804
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   805
    - variation 3
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   806
        After realising that variant and facet information was needed,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   807
        and that additional attributes might need to be accounted for in
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   808
        the future, variation 3 was chosen for evaluation.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   809
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   810
        pkg://opensolaris.org/[email protected],5.11-0.106:20090131T184044Z
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   811
        set name=variant.zone value=global value=nonglobal
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   812
        set name=variant.arch value=sparc value=i386
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   813
        depend [email protected] type=require
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   814
        depend [email protected] type=require
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   815
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   816
3.2.2  JSON format evaluation
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   817
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   818
    When first evaluating JSON, results on x86-based systems were very
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   819
    comparable or significantly better than the manifest-based format
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   820
    from both a file size and performance perspective.  The following
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   821
    structural variations were evaluated:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   822
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   823
    - variation 1
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   824
        Variation one attempted to combine the catalog and attrs files,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   825
        but this approach was abandoned for simplicity and performance
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   826
        reasons in later variations.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   827
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   828
    {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   829
        "attributes": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   830
            "id": "556599b2-aae8-4e67-94b3-c58a07dbd91b",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   831
            "last-modified: "2009-05-08T16:10:25.686485",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   832
            "locale": "C",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   833
            "package-count: 40802,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   834
            "version: 1,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   835
        },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   836
        "packages": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   837
            "SUNWipkg": {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   838
                "publisher": "opensolaris.org",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   839
            "versions": [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   840
                    "0.5.11,5.11-0.111:20090331T083235Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   841
                    "0.5.11,5.11-0.111:20090418T191601Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   842
                    "0.5.11,5.11-0.111:20090508T161025Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   843
                ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   844
            },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   845
        },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   846
    } 
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   847
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   848
    - variation 2
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   849
    {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   850
      "packages":{
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   851
        "SUNWlang-cs-extra":{
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   852
          "publisher":"opensolaris.org",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   853
          "versions":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   854
            [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   855
              "0.5.11,5.11-0.86:20080422T230436Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   856
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   857
                "depend":{
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   858
                  "require":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   859
                    {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   860
                      "fmri":"foo"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   861
                    },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   862
                    {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   863
                      "fmri":"bar"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   864
                    }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   865
                  ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   866
                  "optional":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   867
                    {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   868
                      "fmri":"baz"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   869
                    },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   870
                    {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   871
                      "fmri":"quux"
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   872
                    }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   873
                  ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   874
                }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   875
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   876
            ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   877
          ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   878
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   879
      }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   880
    }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   881
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   882
    - variation 3
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   883
        This variation was attempted due to extreme performance issues
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   884
        that were seen on some lower-memory bandwidth SPARC systems
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   885
        when writing JSON files.  It was discovered that the simplejson
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   886
        library uses a recursive call structure for iterative encoding
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   887
        of python data structures and this does not perform well on many
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   888
        SPARC systems.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   889
        
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   890
        By changing the structure to a list of lists, a decrease om
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   891
        write times of 20-30 seconds was realised.  However, this was
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   892
        less than desirable as it meant the resulting data structure
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   893
        would have to be significantly tranformed after load for use
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   894
        by the package system.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   895
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   896
    [['pkg://opensolaris.org/[email protected],5.11-0.111:20090508T163711Z'],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   897
    ['pkg://opensolaris.org/[email protected],5.11-0.99:20081002T152038Z',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   898
      [['require',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   899
        ['[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   900
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   901
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   902
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   903
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   904
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   905
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   906
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   907
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   908
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   909
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   910
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   911
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   912
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   913
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   914
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   915
         '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   916
         '[email protected]']]]]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   917
    ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   918
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   919
    - variation 4
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   920
        This variation was struck upon after the failure of the last
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   921
        with the attempt to have a data structure that was immediately
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   922
        useful to the packaging system after load:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   923
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   924
    {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   925
      'opensolaris.org': {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   926
        'SUNWsongbird': [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   927
          {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   928
            'depend': {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   929
              'require': [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   930
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   931
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   932
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   933
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   934
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   935
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   936
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   937
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   938
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   939
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   940
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   941
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   942
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   943
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   944
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   945
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   946
                '[email protected]',
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   947
                '[email protected]'
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   948
              ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   949
            },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   950
            'version': '0.5.11,5.11-0.99:20081002T152038Z'
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   951
          },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   952
        ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   953
        'SUNWstc': [
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   954
          {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   955
            'version': '0.5.11,5.11-0.106:20090131T191239Z'
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   956
          },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   957
        ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   958
      },
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   959
    }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   960
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   961
    - variation 5
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   962
        The final variation is what was chosen for final evaluation for
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   963
        JSON after discussions with other team members centered around
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   964
        a key point: that the catalog is essentially an action pipeline
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   965
        for the client.  In addition, the prior variations were either
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   966
        hampered by poor serialization performance on SPARC systems or
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   967
        lacked the extensibility needed for possible future attribute
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   968
        additions to actions.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   969
        
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   970
        {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   971
          "opensolaris.org":{
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   972
            "SUNWdvdrw":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   973
              {
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   974
                "version":"5.21.4.10.8,5.11-0.108:20090218T042840Z",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   975
                "actions":[
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   976
                  "set name=description value=\"DVD creation utilities\"",
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   977
                ]
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   978
              }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   979
            ],
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   980
          }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   981
        }
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   982
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   983
3.2.3  Performance Analysis
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   984
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   985
    While a performance analysis was done for each variation during the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   986
    evaluation process, only the results for the chosen variation are
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   987
    shown here.  Analyis was performed using a dump of the /dev repo
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   988
    for builds 118 and prior consisting of 42,565 unique FMRIs.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   989
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   990
    Each format that was evaluated presented unique challenges.  While
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   991
    the manifest-style provided simplicity and familiarity, it became
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   992
    increasingly apparent during testing that any code that was used
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   993
    to parse and write it would have to be changed significantly each
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   994
    time changes were made to any in-memory structures that were used
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   995
    as the source.  In contrast, the JSON format made it easy to re-use
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   996
    the in-memory python structure as the same format to be written to
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   997
    disk.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   998
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   999
    The uncompressed and gzip-compressed (provided because both Apache
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1000
    and cherrypy are capable of gzip compressing requests) are shown
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1001
    below for comparison.  Of special note is the 'all' catalog shown
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1002
    below which was created to evaluate the feasbility of having a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1003
    single catalog that provided access to all commonly needed metadata
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1004
    by combining the base, dependency, and summary catalogs proposed in
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1005
    section 2.1.2.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1006
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1007
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1008
    Size Comparison
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1009
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1010
    Catalog     Mfst. Sz.   JSON Sz.    Mfst. CSz.  JSON CSz.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1011
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1012
    current     2.25  MiB   -           327 KiB     -
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1013
    base        2.86  MiB   2.00  MiB   305 KiB     246 KiB
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1014
    dependency  16.44 MiB   16.45 MiB   1.4 MiB     1.4 MiB
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1015
    summary     7.58  MiB   7.36  MiB   483 KiB     475 KiB
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1016
    all         21.16 MiB   21.47 MiB   1.6 MiB     1.6 MiB
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1017
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1018
    The time needed to read and write each format is shown below for
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1019
    comparison.  Several runs for each catalog were performed to verify
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1020
    that the timings were consistent, and the load of each system was
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1021
    checked to verify that timings were not skewed.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1022
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1023
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1024
    Base Catalog Timings
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1025
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1026
    System          Mfst. Wr.   JSON Wr.    Mfst. Rd.   JSON Rd.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1027
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1028
    mine            0.13s       0.41s       0.19s       0.05s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1029
    ipkg.sfbay      0.19s       0.58s       0.29s       0.08s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1030
    kodiak.eng      0.30s       0.99s       0.37s       0.08s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1031
    cuphead.sfbay   1.18s       3.41s       1.54s       0.33s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1032
    jurassic.eng    1.37s       3.77s       1.31s       0.46s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1033
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1034
    Mean            0.63s       1.83s       0.74s       0.20s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1035
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1036
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1037
    Dependency Catalog Timings
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1038
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1039
    System          Mfst. Wr.   JSON Wr.    Mfst. Rd.   JSON Rd.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1040
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1041
    mine            0.42s       1.06s       1.13s       0.24s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1042
    ipkg.sfbay      0.98s       1.65s       1.70s       0.39s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1043
    kodiak.eng      0.91s       2.61s       2.22s       0.40s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1044
    cuphead.sfbay   6.05s       9.00s       8.57s       1.57s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1045
    jurassic.eng    3.87s       10.46s      6.48s       2.13s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1046
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1047
    Mean            2.45s       4.96s       4.02s       0.95s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1048
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1049
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1050
    Summary Catalog Timings
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1051
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1052
    System          Mfst. Wr.   JSON Wr.    Mfst. Rd.   JSON Rd.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1053
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1054
    mine            0.16s       0.78s       0.58s       0.14s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1055
    ipkg.sfbay      0.33s       1.09s       0.86s       0.22s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1056
    kodiak.eng      0.35s       1.90s       1.10s       0.25s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1057
    cuphead.sfbay   2.02s       6.55s       4.41s       0.92s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1058
    jurassic.eng    1.35s       7.24s       3.34s       1.25s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1059
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1060
    Mean            0.84s       3.51s       2.06s       0.56s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1061
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1062
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1063
    'all' Catalog Timings
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1064
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1065
    System          Mfst. Wr.   JSON Wr.    Mfst. Rd.   JSON Rd.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1066
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1067
    mine            0.51s       1.22s       1.48s       0.31s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1068
    ipkg.sfbay      1.22s       1.89s       2.30s       0.51s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1069
    kodiak.eng      1.09s       3.05s       2.93s       0.53s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1070
    cuphead.sfbay   7.35s       10.38s      11.15s      2.02s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1071
    jurassic.eng    4.57s       12.20s      8.28s       2.74s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1072
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1073
    Mean            2.95s       5.75s       5.23s       1.22s
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1074
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1075
    System Notes:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1076
    - 'mine' is an Intel Core 2 DUO E8600 with 8GiB RAM
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1077
    - ipkg.sfbay is a dual Opteron 2218 with 16GiB RAM
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1078
    - kodiak.eng is a SPARC64-VI box with 32GiB RAM
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1079
    - cuphead.sfbay is an UltraSparc-T2 with 3GiB RAM
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1080
      (likely ldom or zone)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1081
    - jurassic.eng is an UltraSPARC-III+ with 32GiB RAM
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1082
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1083
    From the timings seen above, it should become apparent that JSON
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1084
    serialization performance is, on average, noticeably slower when
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1085
    compared to a simple manifest-style format.  In particular, this
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1086
    is very noticeable on lower memory-bandwidth SPARC systems.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1087
    
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1088
    It was discovered that the likely reason for poor serialization on
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1089
    some SPARC systems is that simplejson uses a recursive function-
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1090
    based iterative encoder that does not perform well on SPARC systems
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1091
    (due to register windows?).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1092
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1093
    This is likely because the call stack depth for the encoder will
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1094
    match that of any python structure that it encodes.  During the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1095
    evaluation of possible format variations, this resulted in a
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1096
    hybrid approach that combined a python dict with a simple list
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1097
    of actions with the hope that further improvements could be made
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1098
    to simplejson at some future date.  Without this approach,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1099
    significant increases in write times were seen (20-30 seconds)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1100
    when using a pure dict-based structure.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1101
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1102
    Conversely though, JSON read performance, on average, is noticeably
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1103
    faster compared a manifest-style format.  In part, this is because
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1104
    more work has to be performed to transform the manifest-style format
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1105
    into an equivalent python data structure.  Notably, there is a large
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1106
    cost to sorting package versions after load (having the version data
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1107
    in ascending order is extremely useful to the client).
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1108
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1109
    Finally, a comparison of the heap size overhead (defined as the
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1110
    difference between the size of the heap before loading a catalog
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1111
    and after as measured on my x86 system) is shown for comparison
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1112
    below:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1113
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1114
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1115
    'Heap' Overhead Comparison
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1116
    =================================================================
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1117
    Catalog     Mfst. Sz.   JSON Sz.    Increase Sz.    Inc. %
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1118
    -----------------------------------------------------------------
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1119
    base        9.16  MiB   12.45 MiB   +3.29  MiB      +35.92%
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1120
    dependency  32.34 MiB   51.48 MiB   +19.14 MiB      +59.19%
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1121
    summary     16.84 MiB   27.41 MiB   +10.57 MiB      +62.76%
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1122
    all         39.87 MiB   63.88 MiB   +24.01 MiB      +60.22%
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1123
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1124
3.3  Conclusion
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1125
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1126
    When comparing the numbers alone, it seems as though the manifest-
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1127
    style format should have been chosen based solely on:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1128
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1129
    - lower memory usage (43.6% less than JSON on average)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1130
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1131
    - faster write times (1.71s on average compared to 4.01s on average
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1132
      for JSON)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1133
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1134
    However, ultimately, the manifest-style format was rejected for
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1135
    reasons beyond simple numbers:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1136
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1137
    - desire for a defined grammar and syntax
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1138
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1139
    - required maintaining custom parsing and storage code
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1140
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1141
    - not easily extensible such that if additional metadata
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1142
      was needed that a protocol or file format revision might
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1143
      be required
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1144
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1145
    - when weighing read performance vs. write performance,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1146
      read performance was considered more important as updates
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1147
      to the catalog will happen far less freqeuntly than loads
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1148
      of package data (loads took 3.01s on average for manifest-
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1149
      style compared to 0.73s on average for JSON or about 75.75%
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1150
      longer)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1151
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1152
    Instead, the JSON format was selected for the following reasons:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1153
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1154
    - full unicode support
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1155
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1156
    - well-defined grammar and structure
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1157
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1158
    - supported data types almost exactly mirror python's own
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1159
      native data types
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1160
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1161
    - allowed easy storage of existing action data of which
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1162
      catalogs are essentially a summarized view of
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1163
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1164
    - a python library for the parsing and writing of JSON is
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1165
      part of python 2.6+
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1166
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1167
    - JSON is easily portable to other systems and myriad
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1168
      tools are available to parse and write it
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1169
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1170
    - it is anticipated that the performance of simplejson will
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1171
      only improve over time
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1172
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1173
    As a final note, the approach of using separate catalogs for each
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1174
    set of data instead of a single, merged catalog was used to reduce
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1175
    memory usage and the amount of data that needs to be transferred
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1176
    for clients.
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
  1177