author | Brock Pytlik <brock.pytlik@oracle.com> |
Wed, 27 Apr 2011 20:30:32 -0700 | |
changeset 2310 | ce10607d5332 |
parent 2293 | 631000734928 |
child 2319 | 247375ff5e19 |
permissions | -rw-r--r-- |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1 |
#!/usr/bin/python |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
2 |
# |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
3 |
# CDDL HEADER START |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
4 |
# |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
5 |
# The contents of this file are subject to the terms of the |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
6 |
# Common Development and Distribution License (the "License"). |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
7 |
# You may not use this file except in compliance with the License. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
8 |
# |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
9 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
10 |
# or http://www.opensolaris.org/os/licensing. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
11 |
# See the License for the specific language governing permissions |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
12 |
# and limitations under the License. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
13 |
# |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
14 |
# When distributing Covered Code, include this CDDL HEADER in each |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
15 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
16 |
# If applicable, add the following below this CDDL HEADER, with the |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
17 |
# fields enclosed by brackets "[]" replaced with your own identifying |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
18 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
19 |
# |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
20 |
# CDDL HEADER END |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
21 |
# |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
22 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
23 |
# |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2158
diff
changeset
|
24 |
# Copyright (c) 2010, 2011 Oracle and/or its affiliates. All rights reserved. |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
25 |
# |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
26 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
27 |
import pkg.client.api |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
28 |
import pkg.client.progress as progress |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
29 |
import pkg.lint.base as base |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
30 |
import pkg.lint.config |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
31 |
import pkg.fmri |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
32 |
from pkg.version import DotSequence, Version |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
33 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
34 |
import ConfigParser |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
35 |
import inspect |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
36 |
import logging |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
37 |
import os |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
38 |
import shutil |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
39 |
import sys |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
40 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
41 |
PKG_CLIENT_NAME = "pkglint" |
2310
ce10607d5332
11684 desire option to not propagate certs to non-global zones
Brock Pytlik <brock.pytlik@oracle.com>
parents:
2293
diff
changeset
|
42 |
CLIENT_API_VERSION = 57 |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
43 |
pkg.client.global_settings.client_name = PKG_CLIENT_NAME |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
44 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
45 |
class LintEngineException(Exception): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
46 |
"""An exception thrown when something fatal goes wrong with the engine. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
47 |
""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
48 |
def __unicode__(self): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
49 |
# To workaround python issues 6108 and 2517, this provides a |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
50 |
# a standard wrapper for this class' exceptions so that they |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
51 |
# have a chance of being stringified correctly. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
52 |
return str(self) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
53 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
54 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
55 |
class LintEngineCache(): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
56 |
"""This class provides two caches for the LintEngine. A cache of the |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
57 |
latest packages for one or more ImageInterface objects intended to be |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
58 |
seeded at startup, and a generic manifest cache""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
59 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
60 |
def __init__(self, version_pattern, release=None): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
61 |
self.latest_cache = {} |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
62 |
self.misc_cache = {} |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
63 |
self.logger = logging.getLogger("pkglint") |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
64 |
self.seeded = False |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
65 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
66 |
# release is a build number, eg. 150 |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
67 |
# version_pattern used by the engine is a regexp, intended |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
68 |
# to be used when searching for images, combined with the |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
69 |
# release - eg. "*,5.11-0." |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
70 |
# |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
71 |
self.version_pattern = version_pattern |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
72 |
self.release = release |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
73 |
if self.release: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
74 |
combined = "%s%s" % \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
75 |
(version_pattern.split(",")[1], release) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
76 |
try: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
77 |
self.branch = DotSequence(combined.split("-")[1]) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
78 |
except pkg.version.IllegalDotSequence: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
79 |
raise LintEngineException( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
80 |
_("Invalid release string: %s") % self.release) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
81 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
82 |
def seed_latest(self, api_inst, tracker, phase): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
83 |
"""Builds a cache of latest manifests for this api_inst, using |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
84 |
the provided progress tracker, phase and release. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
85 |
""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
86 |
search_type = pkg.client.api.ImageInterface.LIST_NEWEST |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
87 |
pattern_list = ["*"] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
88 |
self.seeded = True |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
89 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
90 |
# a dictionary of PkgFmri objects which we'll use to retrieve |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
91 |
# manifests |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
92 |
packages = {} |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
93 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
94 |
# a dictionary of the latest packages for a given release |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
95 |
self.latest_cache[api_inst] = {} |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
96 |
# a dictionary of packages at other versions |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
97 |
self.misc_cache[api_inst] = {} |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
98 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
99 |
if not self.release: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
100 |
for item in api_inst.get_pkg_list( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
101 |
search_type, patterns=pattern_list, variants=True): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
102 |
pub_name, name, version = item[0] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
103 |
pub = api_inst.get_publisher(prefix=pub_name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
104 |
fmri ="pkg://%s/%s@%s" % (pub, name, version) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
105 |
pfmri = pkg.fmri.PkgFmri(fmri) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
106 |
# index with just the pkg name, allowing us to use |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
107 |
# this cache when searching for dependencies |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
108 |
packages["pkg:/%s" % name] = pfmri |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
109 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
110 |
else: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
111 |
# take a bit more time building up the latest version |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
112 |
# of all packages not greater than build_release |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
113 |
search_type = pkg.client.api.ImageInterface.LIST_ALL |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
114 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
115 |
for item in api_inst.get_pkg_list( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
116 |
search_type, variants=True): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
117 |
pub_name, name, version = item[0] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
118 |
pub = api_inst.get_publisher(prefix=pub_name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
119 |
fmri ="pkg://%s/%s@%s" % (pub, name, version) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
120 |
# obtain just the build branch, e.g. from |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
121 |
# 0.5.11,5.11-0.111:20090508T235707Z, return |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
122 |
# 0.111 |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
123 |
branch = Version(version, None).branch |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
124 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
125 |
pfmri = pkg.fmri.PkgFmri(fmri) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
126 |
key = "pkg:/%s" % name |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
127 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
128 |
if key not in packages and \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
129 |
branch <= self.branch: |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2158
diff
changeset
|
130 |
packages[key] = pfmri |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
131 |
# get_pkg_list returns results sorted by |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
132 |
# publisher, then sorted by version. We may find |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
133 |
# another publisher that has a more recent |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
134 |
# package available, so we need to respect |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
135 |
# timestamps in that case. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
136 |
elif key in packages: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
137 |
prev = packages[key] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
138 |
if lint_fmri_successor(pfmri, prev, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
139 |
ignore_timestamps=False) and \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
140 |
branch <= self.branch: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
141 |
packages[key] = pfmri |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
142 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
143 |
# now get the manifests |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
144 |
tracker.index_set_goal(phase, len(packages)) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
145 |
for item in packages: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
146 |
self.latest_cache[api_inst][item] = \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
147 |
api_inst.get_manifest(packages[item]) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
148 |
tracker.index_add_progress() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
149 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
150 |
def gen_latest(self, api_inst, tracker, pattern): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
151 |
""" A generator function to return the latest version of the |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
152 |
packages matching the supplied pattern from the publishers set |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
153 |
for api_inst""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
154 |
if not self.seeded: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
155 |
raise LintException("Cache has not been seeded") |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
156 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
157 |
if api_inst in self.latest_cache: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
158 |
for item in self.latest_cache[api_inst]: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
159 |
mf = self.latest_cache[api_inst][item] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
160 |
if pattern and pkg.fmri.glob_match( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
161 |
str(mf.fmri), pattern): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
162 |
tracker.index_add_progress() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
163 |
yield mf |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
164 |
elif not pattern: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
165 |
tracker.index_add_progress() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
166 |
yield mf |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
167 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
168 |
def get_latest(self, api_inst, pkg_name): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
169 |
""" Return the package matching pkg_name from the publishers set |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
170 |
for api_inst """ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
171 |
if not self.seeded: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
172 |
raise LintEngineException("Cache has not been seeded") |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
173 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
174 |
if api_inst in self.latest_cache: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
175 |
if pkg_name in self.latest_cache[api_inst]: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
176 |
return self.latest_cache[api_inst][pkg_name] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
177 |
return None |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
178 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
179 |
def count_latest(self, api_inst, pattern): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
180 |
"""Returns the number of manifests in the given api_inst cache |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
181 |
that match the provided pattern. If pattern is None, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
182 |
we return the length of the api_inst cache.""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
183 |
if not self.seeded: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
184 |
raise LintEngineException("Cache has not been seeded") |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
185 |
if not pattern: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
186 |
return len(self.latest_cache[api_inst]) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
187 |
count = 0 |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
188 |
for item in self.latest_cache[api_inst]: |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2158
diff
changeset
|
189 |
mf = self.latest_cache[api_inst][item] |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
190 |
if pkg.fmri.glob_match(str(mf.fmri), pattern): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
191 |
count = count + 1 |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
192 |
return count |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
193 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
194 |
def add(self, api_inst, pkg_name, manifest): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
195 |
"""Adds a given manifest to the cache for a given api_inst""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
196 |
# we don't update latest_cache, since that should have been |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
197 |
# pre-seeded on startup. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
198 |
self.misc_cache[api_inst][pkg_name] = manifest |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
199 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
200 |
def get(self, api_inst, pkg_name): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
201 |
"""Retrieves a given pkg_name entry from the cache. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
202 |
Can raise KeyError if the package isn't in the cache.""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
203 |
if not self.seeded: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
204 |
raise LintEngineException("Cache has not been seeded") |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
205 |
if pkg_name in self.latest_cache[api_inst]: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
206 |
return self.latest_cache[api_inst][pkg_name] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
207 |
else: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
208 |
return self.misc_cache[api_inst][pkg_name] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
209 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
210 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
211 |
class LintEngine(object): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
212 |
"""LintEngine is the main object used by pkglint to discover lint |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
213 |
plugins, and execute lint checks on package manifests, retrieved |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
214 |
from a repository or from local objects. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
215 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
216 |
Lint plugins are written as subclasses of pkg.lint.base.Checker |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
217 |
and are discovered once the module containing them has been listed |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
218 |
in either the shipped pkglintrc file, a user-supplied version, or |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
219 |
the pkg.lint.config.PkglintConfig defaults. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
220 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
221 |
User-supplied manifests for linting are read directly as files |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
222 |
provided on the command line. For cross-checking against a |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
223 |
reference repository, or linting the manifests in a repository, we |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
224 |
create a reference or lint user-images in a provided cache location, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
225 |
used to obtain manifests from those repositories. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
226 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
227 |
Multiple repositories can be provided, however each must |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
228 |
use a different publisher.prefix (as they are added as publishers |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
229 |
to a single user image) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
230 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
231 |
Our reference image is stored in |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
232 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
233 |
<cache>/ref_image/ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
234 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
235 |
The image for linting is stored in |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
236 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
237 |
<cache>/lint_image/ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
238 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
239 |
We can also lint pkg.manifest.Manifest objects, passed as the |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
240 |
lint_manifests list to the setup(..) method. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
241 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
242 |
The config object for the engine has the following keys: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
243 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
244 |
'log_level' The minimum level at which to emit lint messages. Lint |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
245 |
messages lower than this level are discarded. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
246 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
247 |
By default, this is set to INFO. Log levels in order of least to most |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
248 |
severe are: DEBUG, INFO, WARNING, ERROR, CRITICAL |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
249 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
250 |
'do_pub_checks' Whether to perform checks which may only make sense |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
251 |
for published packages. Set to True by default. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
252 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
253 |
'pkglint.ext.*' Multiple keys, specifying modules to load which contain |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
254 |
subclasses of pkg.lint.base.Checker. The value of this property should |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
255 |
be fully specified python module name, assumed to be in $PYTHONPATH |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
256 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
257 |
'pkglint.exclude' A space-separated list of fully-specified Python |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
258 |
modules, classes or function names which should be omitted from the set |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
259 |
of checks performed. eg. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
260 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
261 |
'pkg.lint.opensolaris.ActionChecker' or |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
262 |
'my.lint.module' or |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
263 |
'my.lint.module.ManifestChecker.crosscheck_paths' |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
264 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
265 |
'version.pattern' A version pattern, used when specifying a build number |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
266 |
to lint against (-b). If not specified in the rcfile, this pattern is |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
267 |
"*,5.11-0.", matching all components of the '5.11' build, with a branch |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
268 |
prefix of '0.' |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
269 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
270 |
'info_classification_path' A path the file used to check the values |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
271 |
of info.classification attributes in manifests. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
272 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
273 |
'use_progress_tracker' Whether to use progress tracking. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
274 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
275 |
'ignore_different_publishers' Whether to ignore differences in publisher |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
276 |
when comparing package FMRIs. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
277 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
278 |
The engine has support for a "/* LINTED */"-like functionality, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
279 |
omitting lint checks for actions or manifests that contain |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
280 |
a pkg.linted attribute set to True.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
281 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
282 |
def __init__(self, formatter, verbose=False, config_file=None, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
283 |
use_tracker=None): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
284 |
"""Creates a lint engine a given pkg.lint.log.LogFormatter. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
285 |
'verbose' overrides any log_level settings in the config file |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
286 |
to DEBUG |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
287 |
'config_file' specifies a path to a pkglintrc configuration file |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
288 |
'use_tracker' overrides any pkglintrc settings to either |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
289 |
explicitly enable or disable the use of a tracker, set to None, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
290 |
we don't override the config file setting.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
291 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
292 |
# the directory used to store our user-images. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
293 |
self.basedir = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
294 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
295 |
# a pattern used to narrow searches in the lint image |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
296 |
self.pattern = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
297 |
self.release = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
298 |
# a prefix for the pattern used to search for given releases |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
299 |
self.version_pattern = "*,5.11-0." |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
300 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
301 |
# lists of checker functions and excluded checker functions |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
302 |
self.checkers = [] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
303 |
self.excluded_checkers = [] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
304 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
305 |
# A progress tracker, used during the lint run |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
306 |
self.tracker = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
307 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
308 |
# set up our python logger |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
309 |
self.logger = logging.getLogger("pkglint") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
310 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
311 |
# the pkglint LogFormatters we are configured with |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
312 |
self.logs = [formatter] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
313 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
314 |
# whether to run checks that may only be valid for published |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
315 |
# manifests |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
316 |
self.do_pub_checks = True |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
317 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
318 |
# whether to ignore publisher differences when comparing vers |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
319 |
self.ignore_pubs = True |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
320 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
321 |
self.conf = self.load_config(config_file, verbose=verbose) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
322 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
323 |
# overrides config_file entry |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
324 |
if use_tracker is not None: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
325 |
self.use_tracker = use_tracker |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
326 |
|
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
327 |
self.tracker_phase = 0 |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
328 |
self.in_setup = False |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
329 |
formatter.tracker = self.get_tracker() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
330 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
331 |
self.ref_image = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
332 |
self.lint_image = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
333 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
334 |
self.lint_uris = [] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
335 |
self.ref_uris = [] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
336 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
337 |
# a reference to the pkg.client.api for our reference and lint |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
338 |
# images |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
339 |
self.ref_api_inst = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
340 |
self.lint_api_inst = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
341 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
342 |
# manifests presented to us for parsing on the command line |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
343 |
self.lint_manifests = [] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
344 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
345 |
self.mf_cache = None |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
346 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
347 |
def _load_checker_module(self, name, config): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
348 |
"""Dynamically loads a given checker module, returning new |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
349 |
instances of the checker classes the module declares, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
350 |
assuming they haven't been excluded by the config object.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
351 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
352 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
353 |
self.logger.debug("Loading module %s" % name) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
354 |
__import__(name, None, None, [], -1) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
355 |
(checkers, excluded) = \ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
356 |
base.get_checkers(sys.modules[name], config) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
357 |
return (checkers, excluded) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
358 |
except (KeyError, ImportError), err: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
359 |
raise base.LintException(err) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
360 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
361 |
def _unique_checkers(self): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
362 |
"""Ensure that the engine has unique names for all of the loaded |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
363 |
checks.""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
364 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
365 |
unique_names = set() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
366 |
for checker in self.checkers: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
367 |
if checker.name in unique_names: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
368 |
raise LintEngineException( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
369 |
_("loading extensions: " |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
370 |
"duplicate checker name %(name)s: " |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
371 |
"%(class)s") % |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
372 |
{"name": checker.name, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
373 |
"class": checker}) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
374 |
unique_names.add(checker.name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
375 |
unique_methods = set() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
376 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
377 |
for method in checker.included_checks + \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
378 |
checker.excluded_checks: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
379 |
mname = "%s.%s" % (method.im_class.__name__, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
380 |
method.im_func.func_name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
381 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
382 |
# identify the value of each pkglint_id argument |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
383 |
# for this method. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
384 |
arg_spec = inspect.getargspec(method) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
385 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
386 |
# arg_spec.args is a tuple of the method args, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
387 |
# populating the tuple with both arg values for |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
388 |
# non-keyword arguments, and keyword arg names |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
389 |
# for keyword args |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
390 |
c = len(arg_spec.args) - 1 |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
391 |
i = arg_spec.args.index("pkglint_id") |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
392 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
393 |
if not arg_spec.defaults: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
394 |
continue |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
395 |
# arg_spec.defaults are the default values for |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
396 |
# any keyword args, in order. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
397 |
name = arg_spec.defaults[c - i] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
398 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
399 |
if name in unique_methods: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
400 |
raise LintEngineException(_( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
401 |
"loading extension " |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
402 |
"%(checker)s: duplicate pkglint_id " |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
403 |
"%(name)s in %(method)s") % |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
404 |
{"checker": checker.name, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
405 |
"name": name, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
406 |
"method": mname}) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
407 |
unique_methods.add(name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
408 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
409 |
def load_config(self, config, verbose=False): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
410 |
"""Loads configuration from supplied config file, allowing |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
411 |
a verbosity override.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
412 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
413 |
conf = pkg.lint.config.PkglintConfig(config_file=config).config |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
414 |
excl = [] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
415 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
416 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
417 |
excl = conf.get("pkglint", "pkglint.exclude").split() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
418 |
except ConfigParser.NoOptionError: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
419 |
pass |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
420 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
421 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
422 |
self.version_pattern = conf.get("pkglint", |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
423 |
"version.pattern") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
424 |
except ConfigParser.NoOptionError: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
425 |
pass |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
426 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
427 |
for key, value in conf.items("pkglint"): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
428 |
if "pkglint.ext" in key: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
429 |
if value in excl: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
430 |
# want to exclude everything from here |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
431 |
(checkers, exclude) = \ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
432 |
self._load_checker_module(value, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
433 |
conf) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
434 |
self.excluded_checkers.extend(checkers) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
435 |
self.excluded_checkers.extend(exclude) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
436 |
continue |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
437 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
438 |
(checkers, exclude) = \ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
439 |
self._load_checker_module(value, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
440 |
conf) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
441 |
self.checkers.extend(checkers) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
442 |
self.excluded_checkers.extend(exclude) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
443 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
444 |
except base.LintException, err: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
445 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
446 |
_("Error parsing config value for " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
447 |
"%(key)s: %(err)s") % locals()) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
448 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
449 |
self._unique_checkers() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
450 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
451 |
if verbose: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
452 |
for lint_log in self.logs: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
453 |
lint_log.level = "DEBUG" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
454 |
else: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
455 |
for lint_log in self.logs: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
456 |
lint_log.level = conf.get("pkglint", |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
457 |
"log_level") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
458 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
459 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
460 |
self.do_pub_checks = conf.getboolean("pkglint", |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
461 |
"do_pub_checks") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
462 |
except ConfigParser.NoOptionError: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
463 |
pass |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
464 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
465 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
466 |
self.use_tracker = conf.get("pkglint", |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
467 |
"use_progress_tracker").lower() == "true" |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
468 |
except ConfigParser.NoOptionError: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
469 |
pass |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
470 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
471 |
try: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
472 |
self.ignore_pubs = conf.get("pkglint", |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
473 |
"ignore_different_publishers").lower() == "true" |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
474 |
except ConfigParser.NoOptionError: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
475 |
pass |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
476 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
477 |
return conf |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
478 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
479 |
def setup(self, lint_manifests=[], ref_uris=[], lint_uris=[], |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
480 |
cache=None, pattern=None, release=None): |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
481 |
"""Starts a pkglint session, creates our image, pulls manifests, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
482 |
etc. from servers if necessary. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
483 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
484 |
'cache' An area where we create images to access repos for both |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
485 |
reference and linting purposes |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
486 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
487 |
'lint_manifests' An array of paths to manifests for linting |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
488 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
489 |
'ref_uris' A list of repositories which will be added to the |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
490 |
image used as a reference for linting |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
491 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
492 |
'lint_uris' A list of repositories which will be added to th |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
493 |
image we want to lint |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
494 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
495 |
'pattern' A regexp to match the packages we want to lint, if |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
496 |
empty, we match everything. Note that this is only applied when |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
497 |
searching for packages to lint: we lint against all packages for |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
498 |
a given release in the reference repository (if configured) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
499 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
500 |
'release' A release value that narrows the set of packages we |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
501 |
lint with. This affects both the packages presented for linting |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
502 |
as well as the packages in the repository we are linting |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
503 |
against. If release if set to None, we lint with and against the |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
504 |
latest available packages in the repositories.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
505 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
506 |
self.ref_uris = ref_uris |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
507 |
self.lint_uris = lint_uris |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
508 |
self.lint_manifests = lint_manifests |
2184
48031491a616
17603 pkglint messages should be deterministic
Tim Foster <tim.s.foster@oracle.com>
parents:
2183
diff
changeset
|
509 |
self.lint_manifests.sort() |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
510 |
self.pattern = pattern |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
511 |
self.release = release |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
512 |
self.in_setup = True |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
513 |
self.mf_cache = LintEngineCache(self.version_pattern, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
514 |
release=release) |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
515 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
516 |
if not cache and not lint_manifests: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
517 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
518 |
_("Either a cache directory, or some local " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
519 |
"manifest files must be provided.")) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
520 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
521 |
if not cache and (ref_uris or lint_uris): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
522 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
523 |
_("A cache directory must be provided if using " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
524 |
"reference or lint repositories.")) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
525 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
526 |
if cache: |
2090
d84a7b3cafa3
17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents:
2089
diff
changeset
|
527 |
self.basedir = os.path.abspath(cache) |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
528 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
529 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
530 |
self.lint_image = os.path.join(self.basedir, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
531 |
"lint_image") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
532 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
533 |
if os.path.exists(self.lint_image): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
534 |
self.lint_api_inst = self._get_image( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
535 |
self.lint_image) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
536 |
if self.lint_api_inst and lint_uris: |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
537 |
self.tracker.flush() |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
538 |
self.logger.info( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
539 |
_("Ignoring -l option, " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
540 |
"existing image found.")) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
541 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
542 |
# only create a new image if we've not been |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
543 |
# able to load one, and we have been given a uri |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
544 |
if not self.lint_api_inst and lint_uris: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
545 |
self.lint_api_inst = self._create_image( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
546 |
self.lint_image, self.lint_uris) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
547 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
548 |
if self.lint_api_inst: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
549 |
self.tracker_phase = \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
550 |
self.tracker_phase + 1 |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
551 |
self.mf_cache.seed_latest( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
552 |
self.lint_api_inst, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
553 |
self.get_tracker(), |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
554 |
self.tracker_phase) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
555 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
556 |
except LintEngineException, err: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
557 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
558 |
_("Unable to create lint image: %s") % |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
559 |
str(err)) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
560 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
561 |
self.ref_image = os.path.join(self.basedir, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
562 |
"ref_image") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
563 |
if os.path.exists(self.ref_image): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
564 |
self.ref_api_inst = self._get_image( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
565 |
self.ref_image) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
566 |
if self.ref_api_inst and ref_uris: |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
567 |
self.tracker.flush() |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
568 |
self.logger.info( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
569 |
_("Ignoring -r option, " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
570 |
"existing image found.")) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
571 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
572 |
# only create a new image if we've not been |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
573 |
# able to load one, and we have been given a uri |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
574 |
if not self.ref_api_inst and ref_uris: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
575 |
if not (self.lint_api_inst or \ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
576 |
lint_manifests): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
577 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
578 |
"No lint image or manifests" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
579 |
" provided.") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
580 |
self.ref_api_inst = self._create_image( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
581 |
self.ref_image, self.ref_uris) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
582 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
583 |
if self.ref_api_inst: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
584 |
self.tracker_phase = self.tracker_phase + 1 |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
585 |
self.mf_cache.seed_latest( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
586 |
self.ref_api_inst, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
587 |
self.get_tracker(), |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
588 |
self.tracker_phase) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
589 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
590 |
except LintEngineException, err: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
591 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
592 |
_("Unable to create reference image: %s") % |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
593 |
str(err)) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
594 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
595 |
if not (self.ref_api_inst or self.lint_api_inst): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
596 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
597 |
_("Unable to access any pkglint images " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
598 |
"under %s") % cache) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
599 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
600 |
for checker in self.checkers: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
601 |
checker.startup(self) |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
602 |
self.get_tracker().index_done() |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
603 |
self.in_setup = False |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
604 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
605 |
def execute(self): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
606 |
"""Run the checks that have been configured for this engine. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
607 |
We run checks on all lint_manifests as well as all manifests |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
608 |
in a configured lint repository that match both our pattern |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
609 |
and release (if they have been configured).""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
610 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
611 |
manifest_checks = [] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
612 |
action_checks = [] |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
613 |
count = 0 |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
614 |
for checker in self.checkers: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
615 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
616 |
count = count + len(checker.included_checks) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
617 |
if isinstance(checker, base.ManifestChecker): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
618 |
manifest_checks.append(checker) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
619 |
elif isinstance(checker, base.ActionChecker): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
620 |
action_checks.append(checker) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
621 |
else: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
622 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
623 |
_("%s does not subclass a known " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
624 |
"Checker subclass intended for use by " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
625 |
"pkglint extensions") % str(checker)) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
626 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
627 |
self.tracker.flush() |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
628 |
self.logger.debug(_("Total number of checks found: %s") % count) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
629 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
630 |
for mf in self.lint_manifests: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
631 |
self._check_manifest(mf, manifest_checks, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
632 |
action_checks) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
633 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
634 |
for manifest in self.gen_manifests(self.lint_api_inst, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
635 |
pattern=self.pattern, release=self.release): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
636 |
self._check_manifest(manifest, manifest_checks, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
637 |
action_checks) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
638 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
639 |
def gen_manifests(self, api_inst, pattern=None, release=None): |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
640 |
"""A generator to return package manifests for a given image. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
641 |
With a given pattern, it narrows the set of manifests |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
642 |
returned to match that pattern. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
643 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
644 |
With the given 'release' number, it searches for manifests for |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
645 |
that release using "<pattern>@<version.pattern><release>" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
646 |
where <version.pattern> is set in pkglintrc and |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
647 |
<pattern> and <release> are the keyword arguments to this |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
648 |
method. """ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
649 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
650 |
if not api_inst: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
651 |
return |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
652 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
653 |
tracker = self.get_tracker() |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
654 |
if self.in_setup: |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
655 |
self.tracker_phase = \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
656 |
self.tracker_phase + 1 |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
657 |
tracker.index_set_goal(self.tracker_phase, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
658 |
self.mf_cache.count_latest(api_inst, pattern)) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
659 |
for m in self.mf_cache.gen_latest(api_inst, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
660 |
tracker, pattern): |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2158
diff
changeset
|
661 |
yield m |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
662 |
return |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
663 |
|
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
664 |
EXACT = 0 |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
665 |
LATEST_SUCCESSOR = 1 |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
666 |
|
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
667 |
def get_manifest(self, pkg_name, search_type=EXACT): |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
668 |
"""Returns the first available manifest for a given package |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
669 |
name, searching hierarchically in the lint manifests, |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
670 |
the lint_repo or the ref_repo for that single package. |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
671 |
|
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
672 |
By default, we search for an exact match on the provided |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
673 |
pkg_name, throwing a LintEngineException if we get more than |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
674 |
one match for the supplied pkg_name. |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
675 |
When search_type is LintEngine.LATEST_SUCCESSOR, we return the |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
676 |
most recent successor of the provided package, using the |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
677 |
lint_fmri_successor() method defined in this module. |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
678 |
""" |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
679 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
680 |
if not pkg_name.startswith("pkg:/"): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
681 |
pkg_name = "pkg:/%s" % pkg_name |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
682 |
|
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
683 |
def build_fmri(pkg_name): |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
684 |
"""builds a pkg.fmri.PkgFmri from a string.""" |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
685 |
try: |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
686 |
fmri = pkg.fmri.PkgFmri(pkg_name) |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
687 |
return fmri |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
688 |
except pkg.fmri.IllegalFmri: |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
689 |
try: |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
690 |
# FMRIs listed as dependencies often |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
691 |
# omit build_release, use a dummy one |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
692 |
# for now |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
693 |
fmri = pkg.fmri.PkgFmri(pkg_name, |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
694 |
build_release="5.11") |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
695 |
return fmri |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
696 |
except: |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
697 |
msg = _("unable to construct fmri from %s") % \ |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
698 |
pkg_name |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
699 |
raise base.LintException(msg) |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
700 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
701 |
def get_fmri(api_inst, pkg_name): |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
702 |
"""Retrieve an fmri string that matches pkg_name.""" |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
703 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
704 |
if "*" in pkg_name or "?" in pkg_name: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
705 |
raise base.LintException( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
706 |
_("invalid pkg name %s") % pkg_name) |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
707 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
708 |
if "@" not in pkg_name and self.release: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
709 |
pkg_name = "%s@%s%s" % \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
710 |
(pkg_name, self.version_pattern, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
711 |
self.release) |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
712 |
|
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
713 |
fmris = [] |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
714 |
for item in api_inst.get_pkg_list( |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
715 |
pkg.client.api.ImageInterface.LIST_ALL, |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
716 |
patterns=[pkg_name], variants=True, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
717 |
return_fmris=True): |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
718 |
fmris.append(item[0]) |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
719 |
|
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
720 |
fmri_list = [] |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
721 |
for item in fmris: |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
722 |
fmri_list.append(item.get_fmri()) |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
723 |
|
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
724 |
if len(fmri_list) == 1: |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
725 |
return fmri_list[0] |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
726 |
|
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
727 |
elif len(fmri_list) == 0: |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
728 |
return None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
729 |
else: |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
730 |
# we expected to get only 1 hit, so |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
731 |
# something has gone wrong |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
732 |
raise LintEngineException( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
733 |
_("get_fmri(pattern) %(pattern)s " |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
734 |
"matched %(count)s packages: " |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
735 |
"%(pkgs)s") % |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
736 |
{"pattern": pkg_name, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
737 |
"count": len(fmri_list), |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
738 |
"pkgs": " ".join(fmri_list) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
739 |
}) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
740 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
741 |
def mf_from_image(api_inst, pkg_name, search_type): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
742 |
"""Fetch a manifest for the given package name using |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
743 |
the ImageInterface provided.""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
744 |
if not api_inst: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
745 |
return None |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
746 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
747 |
search_fmri = build_fmri(pkg_name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
748 |
if search_type == self.LATEST_SUCCESSOR: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
749 |
# we want to normalize the pkg_name, removing |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
750 |
# the publisher, if any. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
751 |
name = "pkg:/%s" % search_fmri.get_name() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
752 |
mf = self.mf_cache.get_latest(api_inst, name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
753 |
if not mf: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
754 |
return |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
755 |
# double-check the publishers match, since we |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
756 |
# searched for just a package name |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
757 |
if search_fmri.publisher: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
758 |
if search_fmri.publisher == mf.fmri.publisher: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
759 |
return mf |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
760 |
else: |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
761 |
return mf |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
762 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
763 |
# We've either not found a matching publisher, or we're |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
764 |
# doing an exact search. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
765 |
try: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
766 |
mf = self.mf_cache.get(api_inst, pkg_name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
767 |
return mf |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
768 |
except KeyError: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
769 |
mf = None |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
770 |
fmri = get_fmri(api_inst, pkg_name) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
771 |
if fmri: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
772 |
mf = api_inst.get_manifest( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
773 |
pkg.fmri.PkgFmri(fmri)) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
774 |
self.mf_cache.add(api_inst, pkg_name, mf) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
775 |
return mf |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
776 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
777 |
# search hierarchically for the given package name in our |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
778 |
# local manifests, our lint image, or our reference image |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
779 |
# and return a manifest for that package. |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
780 |
for mf in self.lint_manifests: |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
781 |
search_fmri = build_fmri(pkg_name) |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
782 |
if search_type == self.LATEST_SUCCESSOR and \ |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
783 |
lint_fmri_successor(mf.fmri, search_fmri, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
784 |
ignore_pubs=self.ignore_pubs): |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
785 |
return mf |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
786 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
787 |
if str(mf.fmri) == pkg_name: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
788 |
return mf |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
789 |
if mf.fmri.get_name() == pkg_name: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
790 |
return mf |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
791 |
mf = mf_from_image(self.lint_api_inst, pkg_name, search_type) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
792 |
if mf: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
793 |
return mf |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
794 |
# fallback to our reference api, returning None if that's |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
795 |
# what we were given. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
796 |
return mf_from_image(self.ref_api_inst, pkg_name, search_type) |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
797 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
798 |
def _get_image(self, image_dir): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
799 |
"""Return a pkg.client.api.ImageInterface for the provided |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
800 |
image directory.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
801 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
802 |
cdir = os.getcwd() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
803 |
tracker = self.get_tracker() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
804 |
api_inst = None |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
805 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
806 |
api_inst = pkg.client.api.ImageInterface( |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
807 |
image_dir, CLIENT_API_VERSION, |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
808 |
tracker, None, PKG_CLIENT_NAME) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
809 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
810 |
if api_inst.root != image_dir: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
811 |
api_inst = None |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
812 |
else: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
813 |
# given that pkglint is expected to be used |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
814 |
# during manifest development, we always want |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
815 |
# to refresh now, rather than waiting for some |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
816 |
# update interval |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
817 |
api_inst.refresh(immediate=True) |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
818 |
except Exception, err: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
819 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
820 |
_("Unable to get image at %(dir)s: %(reason)s") % |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
821 |
{"dir": image_dir, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
822 |
"reason": str(err)}) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
823 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
824 |
# restore the current directory, which ImageInterace had changed |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
825 |
os.chdir(cdir) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
826 |
return api_inst |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
827 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
828 |
def _create_image(self, image_dir, repo_uris): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
829 |
"""Create image in the given image directory. For now, only |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
830 |
a single publisher is supported per image.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
831 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
832 |
if len(repo_uris) != 1: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
833 |
raise LintEngineException( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
834 |
_("pkglint only supports a single publisher " |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
835 |
"per image.")) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
836 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
837 |
tracker = self.get_tracker() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
838 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
839 |
is_zone = False |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
840 |
refresh_allowed = True |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
841 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
842 |
self.tracker.flush() |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
843 |
self.logger.debug(_("Creating image at %s") % image_dir) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
844 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
845 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
846 |
api_inst = pkg.client.api.image_create( |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
847 |
PKG_CLIENT_NAME, CLIENT_API_VERSION, image_dir, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
848 |
pkg.client.api.IMG_TYPE_USER, is_zone, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
849 |
facets=pkg.facet.Facets(), force=False, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
850 |
progtrack=tracker, refresh_allowed=refresh_allowed, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
851 |
repo_uri=repo_uris[0]) |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
852 |
except (pkg.client.api_errors.ApiException, OSError, IOError), err: |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
853 |
raise LintEngineException(err) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
854 |
return api_inst |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
855 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
856 |
def _check_manifest(self, manifest, manifest_checks, action_checks): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
857 |
"""Check a given manifest.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
858 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
859 |
if "pkg.linted" in manifest and \ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
860 |
manifest["pkg.linted"].lower() == "true": |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
861 |
self.info("Not checking linted manifest %s" % |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
862 |
manifest.fmri, msgid="pkglint001.1") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
863 |
return |
2090
d84a7b3cafa3
17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents:
2089
diff
changeset
|
864 |
|
d84a7b3cafa3
17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents:
2089
diff
changeset
|
865 |
self.debug(_("Checking %s") % manifest.fmri, "pkglint001.3") |
d84a7b3cafa3
17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents:
2089
diff
changeset
|
866 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
867 |
for checker in manifest_checks: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
868 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
869 |
checker.check(manifest, self) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
870 |
except base.LintException, err: |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
871 |
self.error(err, msgid="lint.error") |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
872 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
873 |
if action_checks: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
874 |
for action in manifest.gen_actions(): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
875 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
876 |
self._check_action(action, manifest, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
877 |
action_checks) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
878 |
except base.LintException, err: |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
879 |
self.error(err, msgid="lint.error") |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
880 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
881 |
def _check_action(self, action, manifest, action_checks): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
882 |
if "pkg.linted" in action.attrs and \ |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
883 |
action.attrs["pkg.linted"].lower() == "true": |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
884 |
self.info("Not checking linted action %s" % |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
885 |
str(action), msgid="pkglint001.2") |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
886 |
return |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
887 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
888 |
for checker in action_checks: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
889 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
890 |
checker.check(action, manifest, self) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
891 |
except base.LintException, err: |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
892 |
self.error(err, msgid="lint.error") |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
893 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
894 |
# convenience methods to log lint messages to all loggers |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
895 |
# configured for this engine |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
896 |
def debug(self, message, msgid=None): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
897 |
for log in self.logs: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
898 |
log.debug(message, msgid=msgid) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
899 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
900 |
def info(self, message, msgid=None): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
901 |
for log in self.logs: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
902 |
log.info(message, msgid=msgid) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
903 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
904 |
def warning(self, message, msgid=None): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
905 |
for log in self.logs: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
906 |
log.warning(message, msgid=msgid) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
907 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
908 |
def error(self, message, msgid=None,): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
909 |
for log in self.logs: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
910 |
log.error(message, msgid=msgid) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
911 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
912 |
def critical(self, message, msgid=None): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
913 |
for log in self.logs: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
914 |
log.critical(message, msgid=msgid) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
915 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
916 |
def teardown(self, clear_cache=False): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
917 |
"""Ends a pkglint session. |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
918 |
clear_cache False by default, True causes the cache to be |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
919 |
destroyed.""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
920 |
for checker in self.checkers: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
921 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
922 |
checker.shutdown(self) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
923 |
except base.LintException, err: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
924 |
self.error(err) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
925 |
self.checkers = [] |
2205
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
926 |
|
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
927 |
# Reset the API object before destroying it; because it does a |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
928 |
# chdir(), we need to save and restore our cwd. |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
929 |
cwd = os.getcwd() |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
930 |
if self.lint_api_inst: |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
931 |
self.lint_api_inst.reset() |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
932 |
os.chdir(cwd) |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
933 |
self.lint_api_inst = None |
53d0be594162
3822 image plans should prevent conflicting actions from being installed
Danek Duvall <danek.duvall@oracle.com>
parents:
2184
diff
changeset
|
934 |
|
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
935 |
if clear_cache: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
936 |
shutil.rmtree(self.basedir) |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
937 |
|
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
938 |
def get_tracker(self): |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
939 |
"""Creates a ProgressTracker if we don't already have one, |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
940 |
otherwise resetting our current tracker and returning it""" |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
941 |
|
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
942 |
if self.tracker and self.in_setup: |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
943 |
return self.tracker |
2046
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
944 |
if self.tracker: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
945 |
self.tracker.reset() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
946 |
return self.tracker |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
947 |
if not self.use_tracker: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
948 |
self.tracker = progress.QuietProgressTracker() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
949 |
else: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
950 |
try: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
951 |
self.tracker = progress.FancyUNIXProgressTracker() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
952 |
except progress.ProgressTrackerException: |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
953 |
self.tracker = progress.CommandLineProgressTracker() |
2522cde7adc2
13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff
changeset
|
954 |
return self.tracker |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
955 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
956 |
def follow_renames(self, pkg_name, target=None, old_mfs=[], |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
957 |
warn_on_obsolete=False): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
958 |
"""Given a package name, and an optional target pfmri that we |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
959 |
expect to be ultimately renamed to, follow package renames from |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
960 |
pkg_name, looking for the package we expect to be at the end of |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
961 |
the chain. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
962 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
963 |
If there was a break in the renaming chain, we return None. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
964 |
old_mfs, if passed, should be a list of manifests that were |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
965 |
sources of this rename. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
966 |
""" |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
967 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
968 |
mf = self.get_manifest(pkg_name, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
969 |
search_type=self.LATEST_SUCCESSOR) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
970 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
971 |
if not mf: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
972 |
return None |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
973 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
974 |
if warn_on_obsolete and "pkg.obsolete" in mf: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
975 |
raise base.LintException( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
976 |
_("obsolete package: %s") % mf.fmri) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
977 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
978 |
# if we're trying to rename to a package in our history, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
979 |
# we should complain |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
980 |
for old_mf in old_mfs: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
981 |
if old_mf.fmri.get_name() == mf.fmri.get_name(): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
982 |
old_mfs.append(mf) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
983 |
raise base.LintException( |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
984 |
_("loop detected in rename: %s") % |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
985 |
" -> ".join(str(s.fmri) for s in old_mfs)) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
986 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
987 |
if "pkg.renamed" in mf and \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
988 |
mf["pkg.renamed"].lower() == "true": |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
989 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
990 |
old_mfs.append(mf) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
991 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
992 |
for dep in mf.gen_actions_by_type("depend"): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
993 |
# disregard dependencies on incorporations |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
994 |
if "incorporation" in dep.attrs["fmri"]: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
995 |
continue |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
996 |
follow = dep.attrs["fmri"] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
997 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
998 |
# the engine's cache lookup doesn't include |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
999 |
# versions, so remove those and lookup the |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1000 |
# latest available version of this dependency |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1001 |
if "@" in follow: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1002 |
follow = follow.split("@")[0] |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1003 |
mf = self.follow_renames(follow, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1004 |
target=target, old_mfs=old_mfs, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1005 |
warn_on_obsolete=warn_on_obsolete) |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1006 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1007 |
# we can stop looking if we've found a package |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1008 |
# of which our target is a successor |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1009 |
if target and mf and \ |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1010 |
lint_fmri_successor(target, mf.fmri, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1011 |
ignore_pubs=self.ignore_pubs): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1012 |
return mf |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1013 |
return mf |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1014 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1015 |
def lint_fmri_successor(new, old, ignore_pubs=True, ignore_timestamps=True): |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1016 |
"""Given two FMRIs, determine if new_fmri is a successor of old_fmri. |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1017 |
|
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1018 |
This differs from pkg.fmri.is_successor() in that it treats un-versioned |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1019 |
FMRIs as being newer than versioned FMRIs of the same package name, |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1020 |
and un-timestamped packages as being newer than versioned FMRIs of the |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1021 |
same package name and version. |
2183
21ae45e8dfcf
17581 There should be a way of removing a package as part of upgrade
Bart Smaalders <Bart.Smaalders@Oracle.COM>
parents:
2158
diff
changeset
|
1022 |
|
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1023 |
For published packages, where the version and pkg names are identical, |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1024 |
but the publisher differs, it also treats the new package as being a |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1025 |
successor of the old. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1026 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1027 |
If ignore_pubs is set, any differences in publishers between the |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1028 |
provided FMRIs are ignored. |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1029 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1030 |
if ignore_timestamps is set, timestamps are not used as a basis for |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1031 |
comparison between new and old FMRIs. |
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1032 |
|
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1033 |
We use this when looking for dependencies, or when comparing |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1034 |
FMRIs presented in manifests for linting against those present in an |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1035 |
existing repository (where, eg. a new timestamp would be supplied to a |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1036 |
package during the import process and the timestamp would not |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1037 |
necessarily be in the manifest file presented for linting) |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1038 |
""" |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1039 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1040 |
if not ignore_pubs and new.publisher != old.publisher: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1041 |
return False |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1042 |
|
2081
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1043 |
new_name = new.get_name() |
f2189c4a03c4
16824 pkglint should remove its workaround for 16811
Tim Foster <tim.s.foster@oracle.com>
parents:
2073
diff
changeset
|
1044 |
old_name = old.get_name() |
2147
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1045 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1046 |
if new_name != old_name: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1047 |
return False |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1048 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1049 |
if not new.has_version(): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1050 |
return True |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1051 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1052 |
# compare everything except the timestamp |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1053 |
if new.has_version() and old.has_version(): |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1054 |
if new.version.release > old.version.release: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1055 |
return True |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1056 |
if new.version.release < old.version.release: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1057 |
return False |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1058 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1059 |
if new.version.branch > old.version.branch: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1060 |
return True |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1061 |
if new.version.branch < old.version.branch: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1062 |
return False |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1063 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1064 |
if new.version.build_release > old.version.build_release: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1065 |
return True |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1066 |
if new.version.build_release < old.version.build_release: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1067 |
return False |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1068 |
if not ignore_timestamps: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1069 |
new_ts = new.version.get_timestamp() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1070 |
old_ts = old.version.get_timestamp() |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1071 |
if new_ts > old_ts: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1072 |
return True |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1073 |
if new_ts < old_ts: |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1074 |
return False |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1075 |
|
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1076 |
# everything is equal, or old has no version and we'll favour new |
d035de6cab14
17002 pkglint unusual_perms check needs to get out more
Tim Foster <tim.s.foster@oracle.com>
parents:
2144
diff
changeset
|
1077 |
return True |