author | Edward Pilatowicz <edward.pilatowicz@oracle.com> |
Sat, 07 May 2011 00:25:10 -0700 | |
changeset 2339 | aa5954c06b9d |
parent 1521 | 946bd128177d |
child 3234 | 3a90dc0b66c9 |
permissions | -rw-r--r-- |
1516
8c950a3b4171
10485 move pkg(5) to Python 2.6
Rich Burridge <rich.burridge@sun.com>
parents:
1505
diff
changeset
|
1 |
#!/usr/bin/python |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
2 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
3 |
# CDDL HEADER START |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
4 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
5 |
# The contents of this file are subject to the terms of the |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
6 |
# Common Development and Distribution License (the "License"). |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
7 |
# You may not use this file except in compliance with the License. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
8 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
9 |
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
10 |
# or http://www.opensolaris.org/os/licensing. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
11 |
# See the License for the specific language governing permissions |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
12 |
# and limitations under the License. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
13 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
14 |
# When distributing Covered Code, include this CDDL HEADER in each |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
15 |
# file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
16 |
# If applicable, add the following below this CDDL HEADER, with the |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
17 |
# fields enclosed by brackets "[]" replaced with your own identifying |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
18 |
# information: Portions Copyright [yyyy] [name of copyright owner] |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
19 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
20 |
# CDDL HEADER END |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
21 |
# |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
22 |
|
1521
946bd128177d
8647 devices not usable immediately after install
Danek Duvall <danek.duvall@sun.com>
parents:
1516
diff
changeset
|
23 |
# Copyright 2009 Sun Microsystems, Inc. All rights reserved. |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
24 |
# Use is subject to license terms. |
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
25 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
26 |
class Singleton(type): |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
27 |
"""Set __metaclass__ to Singleton to create a singleton. |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
28 |
See http://en.wikipedia.org/wiki/Singleton_pattern """ |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
29 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
30 |
def __init__(self, name, bases, dictionary): |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
31 |
super(Singleton, self).__init__(name, bases, dictionary) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
32 |
self.instance = None |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
33 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
34 |
def __call__(self, *args, **kw): |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
35 |
if self.instance is None: |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
36 |
self.instance = super(Singleton, self).__call__(*args, |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
37 |
**kw) |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
38 |
|
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
39 |
return self.instance |
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
40 |
|
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
41 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
42 |
class DebugValues(dict): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
43 |
"""Singleton dict that returns None if unknown value |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
44 |
is referenced""" |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
45 |
__metaclass__ = Singleton |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
46 |
|
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
47 |
def __getitem__(self, item): |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
48 |
""" returns None if not set """ |
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
49 |
return self.get(item, None) |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
50 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
51 |
def get_value(self, key): |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
52 |
return self[key] |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
53 |
|
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
54 |
def set_value(self, key, value): |
1505
cc598d70bbbe
4425 pkg install should deal w/ complex dependency changes in one install
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
584
diff
changeset
|
55 |
self[key] = value |
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
56 |
|
2339
aa5954c06b9d
16148 need linked image support for zones, phase 1
Edward Pilatowicz <edward.pilatowicz@oracle.com>
parents:
1521
diff
changeset
|
57 |
|
584
22bc748edce6
577 need service action for smf(5) manifests
Bart Smaalders <Bart.Smaalders@Sun.COM>
parents:
diff
changeset
|
58 |
DebugValues=DebugValues() |