author | Ginnie Wray<virginia.wray@oracle.com> |
Fri, 29 Jun 2012 00:42:35 -0600 | |
changeset 1737 | c20116627c69 |
parent 1717 | 10cb4d15a248 |
permissions | -rw-r--r-- |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.6 |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
2 |
# |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
3 |
# |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
4 |
# CDDL HEADER START |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
5 |
# |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
6 |
# The contents of this file are subject to the terms of the |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
7 |
# Common Development and Distribution License (the "License"). |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
8 |
# You may not use this file except in compliance with the License. |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
9 |
# |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
10 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
11 |
# or http://www.opensolaris.org/os/licensing. |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
12 |
# See the License for the specific language governing permissions |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
13 |
# and limitations under the License. |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
14 |
# |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
15 |
# When distributing Covered Code, include this CDDL HEADER in each |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
16 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
17 |
# If applicable, add the following below this CDDL HEADER, with the |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
18 |
# fields enclosed by brackets "[]" replaced with your own identifying |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
19 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
20 |
# |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
21 |
# CDDL HEADER END |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
22 |
# |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
23 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
24 |
# |
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
25 |
# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
26 |
# |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
27 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
28 |
'''Some convenience functions that can be used by other test suites that use |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
29 |
the engine in their testing |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
30 |
''' |
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
31 |
import logging |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
32 |
import os |
1169
83735ef8ac29
7042081 usr/src/lib/install_utils is not pep8 clean
Mary Ding <mary.ding@oracle.com>
parents:
909
diff
changeset
|
33 |
import shutil |
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
34 |
import tempfile |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
35 |
import solaris_install.engine as engine |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
36 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
37 |
from solaris_install.logger import InstallLogger |
1737
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
38 |
from solaris_install.data_object import DataObjectBase |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
39 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
40 |
DEBUG_ENGINE = (os.environ.get("DEBUG_ENGINE", "false").lower() == "true") |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
41 |
|
1737
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
42 |
TMP_DIR = "/tmp" |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
43 |
TMP_PREFIX = "logging_" |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
44 |
LOGFILE = "install_log" |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
45 |
DEFAULT_LOG_PREFIX = TMP_DIR + "/" + TMP_PREFIX |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
46 |
|
1202
4b52b212aa41
7037123 Invoking ddu on livecd does not work in snv_161 and onward.
Mary Ding <mary.ding@oracle.com>
parents:
1169
diff
changeset
|
47 |
|
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
48 |
def get_new_engine_instance(doc_in_tmp=True, default_log=None): |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
49 |
'''Returns a new install engine instance. If an existing instance exists, |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
50 |
it will be cleaned up. |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
51 |
''' |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
52 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
53 |
reset_engine() |
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
54 |
|
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
55 |
if not default_log: |
1737
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
56 |
default_log_dir = tempfile.mkdtemp(dir=TMP_DIR, prefix=TMP_PREFIX) |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
57 |
default_log = default_log_dir + "/" + LOGFILE |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
58 |
|
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
59 |
new_engine = engine.InstallEngine(default_log) |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
60 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
61 |
new_engine.debug = DEBUG_ENGINE |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
62 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
63 |
if doc_in_tmp: |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
64 |
# Run tests with /tmp as directory for DOC snapshots so |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
65 |
# they do not have to be run as root |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
66 |
tmp_doc_snapshot_path = ("/tmp/engine_test_doc_path_%s") % os.getpid() |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
67 |
os.environ[new_engine.TMP_CACHE_ENV] = tmp_doc_snapshot_path |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
68 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
69 |
return (new_engine) |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
70 |
|
1202
4b52b212aa41
7037123 Invoking ddu on livecd does not work in snv_161 and onward.
Mary Ding <mary.ding@oracle.com>
parents:
1169
diff
changeset
|
71 |
|
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
72 |
def reset_engine(old_engine=None): |
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
73 |
''' Clean up the engine for the tests ''' |
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
74 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
75 |
try: |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
76 |
if old_engine is None: |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
77 |
old_engine = engine.InstallEngine.get_instance() |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
78 |
# Force all content of the DOC to be cleared. |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
79 |
old_engine.data_object_cache.clear() |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
80 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
81 |
if old_engine._tmp_cache_path is not None: |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
82 |
shutil.rmtree(old_engine._tmp_cache_path, ignore_errors=True) |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
83 |
old_engine._tmp_cache_path = None |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
84 |
except: |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
85 |
pass |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
86 |
|
1737
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
87 |
# Reset the DOC logger to None |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
88 |
DataObjectBase.reset_logger() |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
89 |
|
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
90 |
engine.InstallEngine._instance = None |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
91 |
|
1737
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
92 |
# Make sure that the log file assigned to the logger uses the same |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
93 |
# tempfile directory prefix. If not, only remove the log file and |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
94 |
# not the directory that contains it. |
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
95 |
try: |
1737
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
96 |
if InstallLogger.DEFAULTFILEHANDLER.baseFilename.startswith( |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
97 |
DEFAULT_LOG_PREFIX): |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
98 |
shutil.rmtree(os.path.dirname( |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
99 |
InstallLogger.DEFAULTFILEHANDLER.baseFilename)) |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
100 |
else: |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
101 |
if os.path.isfile(InstallLogger.DEFAULTFILEHANDLER.baseFilename): |
c20116627c69
7178513 slim_source unit tests can hose /system/volatile
Ginnie Wray<virginia.wray@oracle.com>
parents:
1717
diff
changeset
|
102 |
os.remove(InstallLogger.DEFAULTFILEHANDLER.baseFilename) |
1717
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
103 |
except: |
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
104 |
pass |
10cb4d15a248
7066254 Problem with install/logging
Ginnie Wray<virginia.wray@oracle.com>
parents:
1202
diff
changeset
|
105 |
|
909
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
106 |
logging.Logger.manager.loggerDict = {} |
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
107 |
|
ab25dde8919d
16323 Implement Install Execution Engine
Karen Tung <karen.tung@oracle.com>
parents:
diff
changeset
|
108 |
InstallLogger.DEFAULTFILEHANDLER = None |