src/tests/cli/t_pkg_image_create.py
author Shawn Walker <shawn.walker@oracle.com>
Mon, 29 Nov 2010 17:30:29 -0800
changeset 2152 623da55258c6
parent 2144 2ac203b826ab
child 2158 5a688b5b92a3
permissions -rw-r--r--
17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location 17454 pkg should not show error output from removing old image metadata 17455 contents of image ssl directory should be preserved during image format upgrade
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1516
8c950a3b4171 10485 move pkg(5) to Python 2.6
Rich Burridge <rich.burridge@sun.com>
parents: 1504
diff changeset
     1
#!/usr/bin/python
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
     2
#
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
     3
# CDDL HEADER START
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
     4
#
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
     8
#
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    11
# See the License for the specific language governing permissions
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    12
# and limitations under the License.
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    13
#
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    19
#
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    20
# CDDL HEADER END
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    21
#
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    22
926
6ee411c9026a 5871 publisher apis desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 683
diff changeset
    23
#
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
    24
# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
926
6ee411c9026a 5871 publisher apis desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 683
diff changeset
    25
#
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    26
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    27
import testutils
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    28
if __name__ == "__main__":
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
    29
        testutils.setup_environment("../../../proto")
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
    30
import pkg5unittest
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    31
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
    32
import os
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    33
import pkg.portable
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    34
import pkg.catalog
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
    35
import pkg.client.image as image
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
    36
import pkg.config as cfg
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
    37
import pkg.misc as misc
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
    38
import shutil
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    39
import unittest
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
    40
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    41
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
    42
class TestPkgImageCreateBasics(pkg5unittest.ManyDepotTestCase):
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    43
        # Only start/stop the depots once (instead of for every test)
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
    44
        persistent_setup = True
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    45
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    46
        def setUp(self):
1504
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
    47
                # Extra instances of test1 are created so that a valid
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
    48
                # repository that is different than the actual test1
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
    49
                # repository can be used.
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
    50
                pkg5unittest.ManyDepotTestCase.setUp(self, ["test1", "test2",
2100
6a366b063036 17144 Unix socket support is defunct
johansen <johansen@opensolaris.org>
parents: 2097
diff changeset
    51
                    "test1", "test1", "nopubconfig"])
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    52
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
    53
                self.rurl1 = self.dcs[1].get_repo_url()
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
    54
                self.rurl2 = self.dcs[2].get_repo_url()
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
    55
                self.rurl3 = self.dcs[3].get_repo_url()
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
    56
                self.rurl4 = self.dcs[4].get_repo_url()
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
    57
                self.durl5 = self.dcs[5].get_depot_url()
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
    58
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
    59
                # The fifth depot is purposefully one with the publisher
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
    60
                # operation disabled.
2115
c6a812ab117a 16818 pkgrecv -d should publish per-package, not in one lump
Shawn Walker <shawn.walker@oracle.com>
parents: 2100
diff changeset
    61
                self.dcs[5].set_disable_ops(["publisher/0", "publisher/1"])
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
    62
                self.dcs[5].start()
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    63
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    64
        def test_basic(self):
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    65
                """ Create an image, verify it. """
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    66
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
    67
                self.pkg_image_create(self.rurl1, prefix="test1")
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    68
                self.pkg("verify")
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    69
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    70
        def test_image_create_bad_opts(self):
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
    71
                """Test some bad cli options."""
581
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    72
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    73
                self.pkg("image-create -@", exit=2)
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    74
                self.pkg("image-create --bozo", exit=2)
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    75
                self.pkg("image-create", exit=2)
faca6a8e7366 3125 CLI test restructuring
erik.lafever@sun.com
parents:
diff changeset
    76
2026
d1b30615bc99 9196 pkg(5) should have support for cryptographic manifest signatures
Brock Pytlik <bpytlik@sun.com>
parents: 1937
diff changeset
    77
                self.pkg("image-create --set-property foo -p test1=%s %s" %
d1b30615bc99 9196 pkg(5) should have support for cryptographic manifest signatures
Brock Pytlik <bpytlik@sun.com>
parents: 1937
diff changeset
    78
                    (self.rurl1, self.test_root), exit=2)
d1b30615bc99 9196 pkg(5) should have support for cryptographic manifest signatures
Brock Pytlik <bpytlik@sun.com>
parents: 1937
diff changeset
    79
                self.pkg("image-create --set-property foo=bar --set-property "
d1b30615bc99 9196 pkg(5) should have support for cryptographic manifest signatures
Brock Pytlik <bpytlik@sun.com>
parents: 1937
diff changeset
    80
                    "foo=baz -p test1=%s %s" % (self.rurl1, self.test_root),
d1b30615bc99 9196 pkg(5) should have support for cryptographic manifest signatures
Brock Pytlik <bpytlik@sun.com>
parents: 1937
diff changeset
    81
                    exit=2)
d1b30615bc99 9196 pkg(5) should have support for cryptographic manifest signatures
Brock Pytlik <bpytlik@sun.com>
parents: 1937
diff changeset
    82
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    83
        def __add_install_file(self, imgdir, fmri):
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    84
                """Take an image path and fmri. Write a file to disk that
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    85
                indicates that the package named by the fmri has been
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    86
                installed.  Assumes package was installed from a preferred
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    87
                publisher."""
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    88
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    89
                def install_file(fmri):
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    90
                        return "%s/pkg/%s/installed" % (imgdir,
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    91
                            fmri.get_dir_path())
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    92
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    93
                f = file(install_file(fmri), "w")
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    94
                f.writelines(["VERSION_1\n_PRE_", fmri.publisher])
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    95
                f.close()
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    96
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    97
                fi = file("%s/state/installed/%s" % (imgdir,
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    98
                    fmri.get_link_path()), "w")
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
    99
                fi.close()
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   100
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   101
        @staticmethod
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   102
        def __transform_v1_v0(v1_cat, v0_dest):
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   103
                name = os.path.join(v0_dest, "attrs")
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   104
                f = open(name, "wb")
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   105
                f.write("S "
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   106
                    "Last-Modified: %s\n" % v1_cat.last_modified.isoformat())
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   107
                f.write("S prefix: CRSV\n")
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   108
                f.write("S npkgs: %s\n" % v1_cat.package_version_count)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   109
                f.close()
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   110
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   111
                name = os.path.join(v0_dest, "catalog")
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   112
                f = open(name, "wb")
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   113
                # Now write each FMRI in the catalog in the v0 format:
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   114
                # V pkg:/[email protected],5.11-0.86:20080426T173208Z
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   115
                for pub, stem, ver in v1_cat.tuples():
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   116
                        f.write("V pkg:/%s@%s\n" % (stem, ver))
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   117
                f.close()
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   118
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   119
        def test_3588(self):
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   120
                """Ensure that image creation works as expected when an image
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   121
                already exists."""
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   122
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   123
                # These tests are interdependent.
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   124
                #
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   125
                # Bug 3588: Make sure we can't create an image where one
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   126
                # already exists
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   127
                self.pkg("image-create -p test1=%s %s/3588_image" % (
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   128
                    self.rurl1, self.get_img_path()))
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   129
                self.pkg("image-create -p test1=%s %s/3588_image" % (
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   130
                    self.rurl1, self.get_img_path()), exit=1)
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   131
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   132
                # Make sure we can create an image where one
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   133
                # already exists with the -f (force) flag
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   134
                self.pkg("image-create -p test1=%s %s/3588_image_1" % (
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   135
                    self.rurl1, self.get_img_path()))
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   136
                self.pkg("image-create -f -p test1=%s %s/3588_image_1" %
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   137
                         (self.rurl1, self.get_img_path()))
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   138
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   139
                # Bug 3588: Make sure we can't create an image where a
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   140
                # non-empty directory exists
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   141
                p = os.path.join(self.get_img_path(), "3588_2_image")
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   142
                os.mkdir(p)
2026
d1b30615bc99 9196 pkg(5) should have support for cryptographic manifest signatures
Brock Pytlik <bpytlik@sun.com>
parents: 1937
diff changeset
   143
                self.cmdline_run("touch %s/%s" % (p, "somefile"),
d1b30615bc99 9196 pkg(5) should have support for cryptographic manifest signatures
Brock Pytlik <bpytlik@sun.com>
parents: 1937
diff changeset
   144
                    coverage=False)
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   145
                self.pkg("image-create -p test1=%s %s" % (self.rurl1, p),
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   146
                    exit=1)
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   147
                self.pkg("image-create -f -p test1=%s %s" % (self.rurl1, p))
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   148
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   149
        def __verify_pub_cfg(self, img_path, prefix, pub_cfg):
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   150
                """Private helper method to verify publisher configuration."""
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   151
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   152
                img = image.Image(img_path, should_exist=True)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   153
                pub = img.get_publisher(prefix=prefix)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   154
                for section in pub_cfg:
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   155
                        for prop, val in pub_cfg[section].iteritems():
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   156
                                if section == "publisher":
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   157
                                        pub_val = getattr(pub, prop)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   158
                                else:
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   159
                                        pub_val = getattr(
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   160
                                            pub.selected_repository, prop)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   161
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   162
                                if prop in ("legal_uris", "mirrors", "origins",
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   163
                                    "related_uris"):
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   164
                                        # The publisher will have these as lists,
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   165
                                        # so transform both sets of data first
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   166
                                        # for reliable comparison.  Remove any
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   167
                                        # trailing slashes so comparison can
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   168
                                        # succeed.
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   169
                                        if not val:
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   170
                                                val = set()
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   171
                                        else:
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   172
                                                val = set(val.split(","))
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   173
                                        new_pub_val = set()
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   174
                                        for u in pub_val:
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   175
                                                uri = u.uri
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   176
                                                if uri.endswith("/"):
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   177
                                                        uri = uri[:-1]
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   178
                                                new_pub_val.add(uri)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   179
                                        pub_val = new_pub_val
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   180
                                self.assertEqual(val, pub_val)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   181
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   182
                # Loading an image changed the cwd, so change it back.
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   183
                os.chdir(self.test_root)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   184
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   185
        def test_4_options(self):
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   186
                """Verify that all of the options for specifying publisher
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   187
                information work as expected for image-create."""
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   188
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   189
                img_path = os.path.join(self.test_root, "test_4_img")
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   190
                for opt in ("-a", "-p", "--publisher"):
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   191
                        self.pkg("image-create %s test1=%s %s" % (opt,
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   192
                            self.rurl1, img_path))
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   193
                        shutil.rmtree(img_path)
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   194
1504
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   195
                # Verify that specifying additional mirrors and origins works.
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   196
                mirrors = " ".join(
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   197
                    "-m %s" % u
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   198
                    for u in (self.rurl3, self.rurl4)
1504
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   199
                )
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   200
                origins = " ".join(
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   201
                    "-g %s" % u
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   202
                    for u in (self.rurl3, self.rurl4)
1504
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   203
                )
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   204
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   205
                self.pkg("image-create -p test1=%s %s %s %s" % (self.rurl1,
1504
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   206
                    mirrors, origins, img_path))
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   207
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   208
                self.pkg("-R %s publisher | grep origin.*%s" % (img_path,
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   209
                    self.rurl1))
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   210
                for u in (self.rurl3, self.rurl4):
1504
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   211
                        self.pkg("-R %s publisher | grep mirror.*%s" % (
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   212
                            img_path, u))
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   213
                        self.pkg("-R %s publisher | grep origin.*%s" % (
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   214
                            img_path, u))
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   215
                shutil.rmtree(img_path, True)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   216
1795
1b3bed835773 14856 image-create / set-publisher shouldn't require repository configuration to have origins
Shawn Walker <srw@sun.com>
parents: 1736
diff changeset
   217
                # Verify that a v0 repo can be configured for a publisher.
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   218
                # This should succeed as the API should fallback to manual
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   219
                # configuration if auto-configuration isn't available.
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   220
                self.pkg("image-create -p test5=%s %s" % (self.durl5, img_path))
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   221
                pub_cfg = {
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   222
                    "publisher": { "prefix": "test5" },
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   223
                    "repository": { "origins": self.durl5 }
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   224
                }
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   225
                self.__verify_pub_cfg(img_path, "test5", pub_cfg)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   226
                shutil.rmtree(img_path)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   227
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   228
                # Verify that -p auto-configuration works as expected for a
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   229
                # a v1 repository when no prefix is provided.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   230
                self.pkg("image-create -p %s %s" % (self.rurl1, img_path))
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   231
                pub_cfg = {
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   232
                    "publisher": { "prefix": "test1" },
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   233
                    "repository": { "origins": self.rurl1 }
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   234
                }
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   235
                self.__verify_pub_cfg(img_path, "test1", pub_cfg)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   236
                shutil.rmtree(img_path)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   237
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   238
                # Verify that -p auto-configuration works as expected for a
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   239
                # a v1 repository when a prefix is provided.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   240
                self.pkg("image-create -p test1=%s %s" % (self.rurl1, img_path))
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   241
                pub_cfg = {
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   242
                    "publisher": { "prefix": "test1" },
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   243
                    "repository": { "origins": self.rurl1 }
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   244
                }
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   245
                self.__verify_pub_cfg(img_path, "test1", pub_cfg)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   246
                shutil.rmtree(img_path)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   247
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   248
                # Verify that -p auto-configuration works as expected for a
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   249
                # a v1 repository with additional origins and mirrors.
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   250
                self.pkg("image-create -p test1=%s -g %s -m %s %s" % (
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   251
                    self.rurl1, self.rurl3, self.durl5, img_path))
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   252
                pub_cfg = {
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   253
                    "publisher": { "prefix": "test1" },
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   254
                    "repository": {
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   255
                        "origins": "%s,%s" % (self.rurl1,self.rurl3),
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   256
                        "mirrors": self.durl5,
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   257
                    },
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   258
                }
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   259
                self.__verify_pub_cfg(img_path, "test1", pub_cfg)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   260
                shutil.rmtree(img_path)
1504
265a1d6b86bd 9969 client support for multiple origins desired
Shawn Walker <srw@sun.com>
parents: 1431
diff changeset
   261
1086
16500d7bf1ca 8321 image_create should not validate publisher uri
Shawn Walker <srw@sun.com>
parents: 938
diff changeset
   262
        def test_5_bad_values_no_image(self):
16500d7bf1ca 8321 image_create should not validate publisher uri
Shawn Walker <srw@sun.com>
parents: 938
diff changeset
   263
                """Verify that an invalid publisher URI or other piece of
16500d7bf1ca 8321 image_create should not validate publisher uri
Shawn Walker <srw@sun.com>
parents: 938
diff changeset
   264
                information provided to image-create will not result in an
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   265
                empty image being created despite failure.  In addition,
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   266
                test that omitting required information will also not result
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   267
                in the creation of an image."""
1086
16500d7bf1ca 8321 image_create should not validate publisher uri
Shawn Walker <srw@sun.com>
parents: 938
diff changeset
   268
16500d7bf1ca 8321 image_create should not validate publisher uri
Shawn Walker <srw@sun.com>
parents: 938
diff changeset
   269
                p = os.path.join(self.get_img_path(), "test_5_image")
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   270
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   271
                # Invalid URIs should not result in the creation of an image.
1086
16500d7bf1ca 8321 image_create should not validate publisher uri
Shawn Walker <srw@sun.com>
parents: 938
diff changeset
   272
                self.pkg("image-create -p test=InvalidURI %s" % p, exit=1)
16500d7bf1ca 8321 image_create should not validate publisher uri
Shawn Walker <srw@sun.com>
parents: 938
diff changeset
   273
                self.assertFalse(os.path.exists(p))
16500d7bf1ca 8321 image_create should not validate publisher uri
Shawn Walker <srw@sun.com>
parents: 938
diff changeset
   274
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   275
                self.pkg("image-create -p InvalidURI %s" % p, exit=1)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   276
                self.assertFalse(os.path.exists(p))
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   277
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   278
                # Valid URI but without prefix and with --no-refresh; auto-
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   279
                # configuration isn't possible in this scenario and so
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   280
                # an image should not be created.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   281
                self.pkg("image-create --no-refresh -p %s %s" % (self.rurl1, p),
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   282
                    exit=2)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   283
                self.assertFalse(os.path.exists(p))
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   284
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   285
                # Valid URI but with the wrong publisher prefix should
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   286
                # not create an image.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   287
                self.pkg("image-create -p nosuchpub=%s %s" % (self.rurl1, p),
1736
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   288
                    exit=1)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   289
                self.assertFalse(os.path.exists(p))
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   290
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   291
                # Valid URI, without a publisher prefix, but for a repository
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   292
                # that doesn't provide publisher configuration should not
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   293
                # create an image.
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   294
                self.pkg("image-create -p %s %s" % (self.durl5, p),
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   295
                    exit=1)
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   296
                self.assertFalse(os.path.exists(p))
727dda1e7968 11522 pkg should require publisher prefix to match repository information
Shawn Walker <srw@sun.com>
parents: 1715
diff changeset
   297
1133
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   298
        def test_6_relative_root_create(self):
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   299
                """Verify that an image with a relative path for the root is
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   300
                created correctly."""
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   301
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   302
                pwd = os.getcwd()
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   303
                img_path = "test_6_image"
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   304
                abs_img_path = os.path.join(self.test_root, img_path)
1133
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   305
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   306
                # Now verify that the image root isn't duplicated within the
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   307
                # specified image root if the specified root doesn't already
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   308
                # exist.
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   309
                os.chdir(self.test_root)
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   310
                self.pkg("image-create -p test1=%s %s" % (self.rurl1,
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   311
                    img_path))
1133
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   312
                os.chdir(pwd)
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   313
                self.assertFalse(os.path.exists(os.path.join(abs_img_path,
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   314
                    img_path)))
1133
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   315
                shutil.rmtree(abs_img_path)
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   316
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   317
                # Now verify that the image root isn't duplicated within the
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   318
                # specified image root if the specified root already exists.
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   319
                os.chdir(self.test_root)
1133
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   320
                os.mkdir(img_path)
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   321
                self.pkg("image-create -p test1=%s %s" % (self.rurl1,
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   322
                    img_path))
1133
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   323
                os.chdir(pwd)
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   324
                self.assertFalse(os.path.exists(os.path.join(abs_img_path,
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   325
                    img_path)))
1133
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   326
                shutil.rmtree(abs_img_path)
2c28e4526a6e 8720 image-create with a non-absolute path can cause strange results
Shawn Walker <srw@sun.com>
parents: 1086
diff changeset
   327
1143
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   328
        def test_7_image_create_no_refresh(self):
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   329
                """Verify that image-create --no-refresh works as expected.
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   330
                See bug 8777 for related issue."""
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   331
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   332
                pkgsend_data = """
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   333
                open [email protected]
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   334
                close
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   335
                """
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   336
                self.pkgsend_bulk(self.rurl1, pkgsend_data)
1143
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   337
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   338
                # First, check to be certain that an image-create --no-refresh
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   339
                # will succeed.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   340
                self.pkg_image_create(self.rurl2, prefix="test1",
1143
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   341
                    additional_args="--no-refresh")
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   342
                self.pkg("list --no-refresh -a | grep baz", exit=1)
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   343
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   344
                # Finally, verify that using set-publisher will cause a refresh
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   345
                # which in turn should cause 'baz' to be listed *if* the origin
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   346
                # has changed (setting it to the same value again won't work).
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   347
                self.pkg("set-publisher -O %s test1" % self.rurl1)
1143
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   348
                self.pkg("list --no-refresh -a | grep baz")
71becfca5cfd 8777 image-create traceback with --no-refresh
Shawn Walker <srw@sun.com>
parents: 1133
diff changeset
   349
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   350
        def test_8_image_upgrade(self):
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   351
                """Verify that a version 2 or version 3 image can be used by a
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   352
                client that creates version 4 images, and that it will be
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   353
                upgraded correctly when a privileged user uses it."""
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   354
1353
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   355
                # Publish some sample packages (to separate repositories).
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   356
                self.pkgsend_bulk(self.rurl1, "open [email protected]\nclose")
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   357
                self.pkgsend_bulk(self.rurl2, "open [email protected]\nclose")
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   358
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   359
                # First, create a new image.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   360
                self.pkg_image_create(self.rurl1, prefix="test1")
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   361
2152
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   362
                # Create a 'repo' directory in image directory so that we
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   363
                # can verify that it survives the various upgrades.
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   364
                rpath = os.path.join(self.get_img_path(), "repo")
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   365
                self.pkgrepo("create %s" % rpath)
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   366
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   367
                # Create an 'ssl' directory in image directory so that we
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   368
                # can verify that it survives the various upgrades.
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   369
                sslpath = os.path.join(self.get_img_path(), "ssl")
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   370
                sslfile = os.path.join(sslpath, "my.cert")
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   371
                os.mkdir(sslpath)
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   372
                open(sslfile, "wb").close()
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   373
1353
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   374
                # Add the second repository.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   375
                self.pkg("set-publisher -O %s test2" % self.rurl2)
1353
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   376
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   377
                # Next, install the packages.
1353
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   378
                self.pkg("install quux")
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   379
                self.pkg("set-publisher -P test2")
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   380
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   381
                # This is necessary to ensure that packages installed from a
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   382
                # previously preferred publisher also get the correct status.
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   383
                self.pkg("install corge")
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   384
                self.pkg("set-publisher -P test1")
1353
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   385
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   386
                # Next, disable the second repository's publisher.
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   387
                self.pkg("set-publisher -d test2")
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   388
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   389
                # Next, convert the v4 image to a v2 image.
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   390
                img_root = os.path.join(self.get_img_path(), "var", "pkg")
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   391
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   392
                cat_path = os.path.join(img_root, "catalog")
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   393
                pub_path = os.path.join(img_root, "publisher")
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   394
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   395
                v1_cat = pkg.catalog.Catalog(meta_root=os.path.join(pub_path,
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   396
                    "test1", "catalog"), read_only=True)
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   397
                v0_cat_path = os.path.join(cat_path, "test1")
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   398
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   399
                # For conversion, the v0 catalogs need to be generated in
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   400
                # the v2 location.
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   401
                os.makedirs(v0_cat_path)
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   402
                self.__transform_v1_v0(v1_cat, v0_cat_path)
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   403
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   404
                # Manifests have to be linked into their v2/v3 location.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   405
                def link_manifests():
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   406
                        for pub in os.listdir(pub_path):
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   407
                                pkg_root = os.path.join(pub_path, pub, "pkg")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   408
                                for stem in os.listdir(pkg_root):
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   409
                                        stem_root = os.path.join(pkg_root, stem)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   410
                                        for ver in os.listdir(stem_root):
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   411
                                                src = os.path.join(stem_root,
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   412
                                                    ver)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   413
                                                dest = os.path.join(img_root,
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   414
                                                    "pkg", stem, ver,
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   415
                                                    "manifest")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   416
                                                misc.makedirs(
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   417
                                                    os.path.dirname(dest))
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   418
                                                os.link(src, dest)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   419
                link_manifests()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   420
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   421
                # The existing installed state has to be converted to v2.
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   422
                state_dir = os.path.join(img_root, "state")
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   423
                inst_state_dir = os.path.join(state_dir, "installed")
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   424
                cat = pkg.catalog.Catalog(meta_root=inst_state_dir)
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   425
                for f in cat.fmris():
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   426
                        self.__add_install_file(img_root, f)
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   427
                cat = None
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   428
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   429
                # Now dump any v4 directories not found in v2 images.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   430
                shutil.rmtree(pub_path)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   431
                for entry in ("cache", "license", "ssl", "state/known"):
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   432
                        shutil.rmtree(os.path.join(img_root, entry))
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   433
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   434
                for fname in sorted(os.listdir(inst_state_dir)):
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   435
                        if fname.startswith("catalog"):
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   436
                                pkg.portable.remove(os.path.join(inst_state_dir,
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   437
                                    fname))
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   438
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   439
                # Finally, rename image configuration and revert it.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   440
                src = os.path.join(img_root, "pkg5.image")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   441
                dest = os.path.join(img_root, "cfg_cache")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   442
                newcfg = cfg.FileConfig(src)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   443
                newcfg._version = 2
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   444
                newcfg.set_property("image", "version", 2)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   445
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   446
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   447
                # Older clients store disabled authorities in separate config
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   448
                # file.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   449
                disabled_src = os.path.join(img_root, "disabled_auth")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   450
                discfg = cfg.FileConfig(disabled_src, version=2)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   451
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   452
                for p in ("publisher-search-order", "signature-required-names"):
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   453
                        newcfg.remove_property("property", p)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   454
                for p in ("origins", "property.signature-required-names",
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   455
                    "intermediate_certs", "approved_ca_certs",
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   456
                    "revoked_ca_certs", "signing_ca_certs"):
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   457
                        newcfg.remove_property("authority_test1", p)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   458
                        newcfg.remove_property("authority_test2", p)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   459
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   460
                discfg.add_section(newcfg.get_section("authority_test2"))
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   461
                newcfg.remove_section("authority_test2")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   462
                newcfg.write()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   463
                pkg.portable.rename(src, dest)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   464
                discfg.write()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   465
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   466
                # Next, verify that the new client can read v2 images as an
1353
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   467
                # an unprivileged user.  Each must be done with and without
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   468
                # the publisher prefix to test that these are stripped and
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   469
                # read properly (because of the publisher preferred prefix).
1672
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   470
                self.pkg("publisher -a", su_wrap=True)
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   471
                self.pkg("info pkg://test1/quux corge", su_wrap=True)
1353
b9535ddac1c6 11319 image format upgrade can traceback on installed packages from disabled publisher
Shawn Walker <srw@sun.com>
parents: 1352
diff changeset
   472
                self.pkg("info pkg://test2/corge quux", su_wrap=True)
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   473
                self.pkg("update -nv --no-refresh", su_wrap=True, exit=4)
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   474
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   475
                # Verify pkg refresh fails when not simulating a live root
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   476
                # since image needs format update.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   477
                self.pkg("refresh", exit=1)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   478
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   479
                # Next, verify that the client won't automatically upgrade
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   480
                # images unless the image is the liveroot.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   481
                self.pkg("--debug simulate_live_root=True info quux "
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   482
                    "pkg://test1/quux pkg://test2/corge")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   483
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   484
                # Next, verify that the new client can upgrade v2 images to
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   485
                # v4 images if the image is the liveroot.
1431
62b6033670e4 10416 server catalog v1 support desired
Shawn Walker <srw@sun.com>
parents: 1359
diff changeset
   486
                self.pkg("info quux pkg://test1/quux pkg://test2/corge")
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   487
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   488
                # Next, verify that the old structures and state information
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   489
                # are gone and a part of the new structure is present.
1352
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   490
                self.assertFalse(os.path.exists(cat_path))
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   491
                self.assertTrue(os.path.exists(pub_path))
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   492
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   493
                for pl in sorted(os.listdir(inst_state_dir)):
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   494
                        # If there any other files but catalog files here, then
5c92c9d342ef 11065 client v1 catalog support for v0 catalogs
Shawn Walker <srw@sun.com>
parents: 1143
diff changeset
   495
                        # the old state information didn't get properly removed.
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   496
                        self.assert_(pl.startswith("catalog."))
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   497
2144
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   498
                # Now convert the v4 image to a v3 image.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   499
                link_manifests()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   500
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   501
                # Dump any v4 directories not found in v3 images.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   502
                for entry in ("cache", "license", "ssl"):
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   503
                        shutil.rmtree(os.path.join(img_root, entry))
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   504
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   505
                # Next, revert image configuration.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   506
                src = os.path.join(img_root, "pkg5.image")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   507
                newcfg = cfg.FileConfig(src)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   508
                newcfg._version = 3
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   509
                newcfg.set_property("image", "version", 3)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   510
                newcfg.write()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   511
                newcfg.reset()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   512
                newcfg.write()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   513
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   514
                # Next, verify that the new client can read v3 images as an
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   515
                # an unprivileged user.  Each must be done with and without
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   516
                # the publisher prefix to test that these are stripped and
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   517
                # read properly.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   518
                self.pkg("--debug simulate_live_root=True publisher -a",
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   519
                    su_wrap=True)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   520
                self.pkg("--debug simulate_live_root=True info "
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   521
                    "pkg://test1/quux corge", su_wrap=True)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   522
                self.pkg("--debug simulate_live_root=True info "
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   523
                    "pkg://test2/corge quux", su_wrap=True)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   524
                self.pkg("--debug simulate_live_root=True update -nv "
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   525
                    "--no-refresh", su_wrap=True, exit=4)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   526
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   527
                # Next, verify that the new client can upgrade v3 images to
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   528
                # v4 images.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   529
                self.pkg("--debug simulate_live_root=True info quux "
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   530
                    "pkg://test1/quux pkg://test2/corge")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   531
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   532
                # Next, verify that the old structures and state information
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   533
                # are gone and a part of the new structure is present.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   534
                self.assertFalse(os.path.exists(
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   535
                    os.path.join(img_root, "index")))
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   536
                self.assertTrue(os.path.exists(
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   537
                    os.path.join(img_root, "cache")))
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   538
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   539
                # Now convert the v4 image to a v3 image again.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   540
                link_manifests()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   541
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   542
                # Dump any v4 directories not found in v3 images.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   543
                for entry in ("cache", "license", "ssl"):
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   544
                        shutil.rmtree(os.path.join(img_root, entry))
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   545
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   546
                # Next, revert image configuration.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   547
                src = os.path.join(img_root, "pkg5.image")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   548
                newcfg = cfg.FileConfig(src)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   549
                newcfg._version = 3
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   550
                newcfg.set_property("image", "version", 3)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   551
                newcfg.write()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   552
                newcfg.reset()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   553
                newcfg.write()
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   554
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   555
                # Verify pkg update-format fails as an unprivileged user.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   556
                self.pkg("update-format", su_wrap=True, exit=1)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   557
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   558
                # Verify pkg refresh succeeds even when image needs format
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   559
                # update for a v3 image.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   560
                self.pkg("refresh")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   561
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   562
                # Verify update-format will upgrade a v3 image to a v4 image.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   563
                self.pkg("update-format")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   564
                self.assertFalse(os.path.exists(
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   565
                    os.path.join(img_root, "index")))
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   566
                self.assertTrue(os.path.exists(
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   567
                    os.path.join(img_root, "cache")))
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   568
                self.pkg("verify")
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   569
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   570
                # Verify updated image works as expected.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   571
                self.pkg("publisher -a", su_wrap=True)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   572
                self.pkg("info pkg://test1/quux corge", su_wrap=True)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   573
                self.pkg("info pkg://test2/corge quux", su_wrap=True)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   574
                self.pkg("update -nv --no-refresh", su_wrap=True, exit=4)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   575
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   576
                # Verify an already updated image will cause update-format to
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   577
                # exit 4.
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   578
                self.pkg("update-format", exit=4)
2ac203b826ab 7276 /var/pkg metadata needs reorg (looks busy)
Shawn Walker <shawn.walker@oracle.com>
parents: 2115
diff changeset
   579
2152
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   580
                # Finally, check that repository and ssl data still exists
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   581
                # through all the upgrades.
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   582
                self.assert_(os.path.exists(os.path.join(rpath,
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   583
                    "pkg5.repository")))
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   584
                self.assert_(os.path.exists(sslfile))
623da55258c6 17453 /var/pkg/repo should be preserved during image format upgrades and not used as a default depot location
Shawn Walker <shawn.walker@oracle.com>
parents: 2144
diff changeset
   585
1658
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   586
        def test_9_bad_image_state(self):
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   587
                """Verify that the pkg(1) command handles invalid image state
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   588
                gracefully."""
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   589
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   590
                # Publish a package.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   591
                self.pkgsend_bulk(self.rurl1, """
1658
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   592
                open [email protected]
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   593
                close
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   594
                """)
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   595
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   596
                # First, create a new image.
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   597
                self.pkg_image_create(self.rurl1, prefix="test1")
1658
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   598
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   599
                # Verify pkg info works as expected.
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   600
                self.pkg("info -r foo")
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   601
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   602
                # Now invalidate the existing image data.
2073
9fcacc9e5eaa 16998 transport should support publisher-specific write and read caches
Shawn Walker <shawn.walker@oracle.com>
parents: 2026
diff changeset
   603
                state_path = self.get_img_api_obj().img._statedir
1658
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   604
                kfile_path = os.path.join(state_path, "known", "catalog.attrs")
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   605
                ifile_path = os.path.join(state_path, "installed",
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   606
                    "catalog.attrs")
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   607
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   608
                self.pkg("install foo")
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   609
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   610
                with open(kfile_path, "w") as f:
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   611
                        f.write("InvalidCatalogFile")
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   612
                        f.flush()
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   613
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   614
                # Should work since known catalog file was corrupted, not the
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   615
                # installed catalog file.
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   616
                self.pkg("info foo")
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   617
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   618
                # These should all fail as they depend on the known catalog
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   619
                # file.
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   620
                self.pkg("list -a", exit=1)
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   621
                self.pkg("install -nv foo", exit=1)
2089
c8b9d6341530 2775 pkg should provide a way to downgrade (reinstall) packages
Shawn Walker <shawn.walker@oracle.com>
parents: 2073
diff changeset
   622
                self.pkg("update -nv", exit=1)
1658
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   623
                self.pkg("info -r foo", exit=1)
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   624
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   625
                with open(ifile_path, "w") as f:
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   626
                        f.write("InvalidCatalogFile")
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   627
                        f.flush()
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   628
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   629
                # Should fail since installed catalog file is corrupt.
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   630
                self.pkg("info foo", exit=1)
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   631
                self.pkg("list", exit=1)
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   632
1672
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   633
        def test_10_unprivileged(self):
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   634
                """Verify that pkg correctly handles permission errors during
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   635
                image-create."""
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   636
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   637
                p = os.path.join(self.test_root, "unpriv_test_10")
1672
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   638
                os.mkdir(p)
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   639
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   640
                self.pkg("image-create -p test1=%s %s/image" % (
1895
0a260cc2a689 15762 client support for filesystem-based repository access
Shawn Walker <shawn.walker@oracle.com>
parents: 1859
diff changeset
   641
                    self.rurl1, p), su_wrap=True, exit=1)
1672
3a71439a03f3 13021 file manager exceptions should be api exceptions
Shawn Walker <srw@sun.com>
parents: 1658
diff changeset
   642
1658
49b8cc06eecb 13360 client can traceback if corrupt catalogs exist
Shawn Walker <srw@sun.com>
parents: 1516
diff changeset
   643
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   644
class TestImageCreateNoDepot(pkg5unittest.CliTestCase):
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   645
        persistent_setup = True
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   646
        def test_bad_image_create(self):
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   647
                """ Create image from non-existent server """
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   648
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   649
                #
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   650
                # Currently port 4 is unassigned by IANA and we
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   651
                # Can just hope that it never gets assigned.
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   652
                # We choose localhost because, well, we think
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   653
                # it will be universally able to be looked up.
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   654
                #
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   655
                durl = "http://localhost:4"
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   656
                self.assertRaises(pkg5unittest.UnexpectedExitCodeException, \
1859
6e6e866921e7 529 client can traceback with EBUSY during action removal
Shawn Walker <shawn.walker@oracle.com>
parents: 1795
diff changeset
   657
                    self.pkg_image_create, durl)
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   658
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   659
        def test_765(self):
926
6ee411c9026a 5871 publisher apis desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 683
diff changeset
   660
                """Bug 765: malformed publisher URL."""
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   661
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   662
                durl = "bar=baz"
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   663
                self.assertRaises(pkg5unittest.UnexpectedExitCodeException, \
1859
6e6e866921e7 529 client can traceback with EBUSY during action removal
Shawn Walker <shawn.walker@oracle.com>
parents: 1795
diff changeset
   664
                    self.pkg_image_create, durl)
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   665
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   666
        def test_763a(self):
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   667
                """Bug 763, traceback 1: no -p option given to image-create."""
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   668
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   669
                self.assertRaises(pkg5unittest.UnexpectedExitCodeException, \
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   670
                    self.pkg, "image-create foo")
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   671
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   672
        def test_763c(self):
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   673
                """Bug 763, traceback 3: -p given to image-create, but no
926
6ee411c9026a 5871 publisher apis desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 683
diff changeset
   674
                publisher specified."""
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   675
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   676
                self.assertRaises(pkg5unittest.UnexpectedExitCodeException, \
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   677
                    self.pkg, "image-create -p foo")
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   678
926
6ee411c9026a 5871 publisher apis desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 683
diff changeset
   679
        def test_bad_publisher_options(self):
6ee411c9026a 5871 publisher apis desired
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 683
diff changeset
   680
                """More tests that abuse the publisher prefix and URL."""
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   681
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   682
                self.assertRaises(pkg5unittest.UnexpectedExitCodeException, \
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   683
                    self.pkg, "image-create -p $%^8" + ("=http://%s1" %
683
5e5d509f00e3 4422 t_pkg_authority pinging extant node accidentally
Brock Pytlik <bpytlik@sun.com>
parents: 582
diff changeset
   684
                    self.bogus_url))
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   685
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   686
                self.assertRaises(pkg5unittest.UnexpectedExitCodeException, \
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   687
                    self.pkg, "image-create -p test1=http://$%^8")
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   688
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   689
                self.assertRaises(pkg5unittest.UnexpectedExitCodeException, \
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   690
                    self.pkg, "image-create -p test1=http://%s1:abcde" %
683
5e5d509f00e3 4422 t_pkg_authority pinging extant node accidentally
Brock Pytlik <bpytlik@sun.com>
parents: 582
diff changeset
   691
                    self.bogus_url)
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   692
1715
8f305f0a6864 8265 EINVAL on rmdir running "make test"
Dan Price <dp@eng.sun.com>
parents: 1672
diff changeset
   693
                self.assertRaises(pkg5unittest.UnexpectedExitCodeException, \
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   694
                    self.pkg, "image-create -p test1=ftp://%s1" %
683
5e5d509f00e3 4422 t_pkg_authority pinging extant node accidentally
Brock Pytlik <bpytlik@sun.com>
parents: 582
diff changeset
   695
                    self.bogus_url)
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   696
938
eeb932b9b44e 7336 putback for 5871 missed a few vestiges of authority
Shawn Walker <Shawn.Walker@Sun.COM>
parents: 926
diff changeset
   697
582
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   698
if __name__ == "__main__":
303fa3b78f93 3588 Ensure that users don't image-create over top of an image
Brad Hall <bhall@eng.sun.com>
parents: 581
diff changeset
   699
        unittest.main()