~ubuntu-branches/ubuntu/saucy/cloud-init/saucy

« back to all changes in this revision

Viewing changes to cloudinit/sources/__init__.py

  • Committer: Package Import Robot
  • Author(s): Scott Moser
  • Date: 2012-08-31 17:04:06 UTC
  • mto: (245.3.1 raring)
  • mto: This revision was merged to the branch mainline in revision 290.
  • Revision ID: package-import@ubuntu.com-20120831170406-0dbj84kjdfcn4ktr
* New upstream snapshot.
  * support using launch-index (ami-launch-index) (LP: #1023177)
  * usergroup related fixes (LP: #1041384, #1044044, #1044508)

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#    You should have received a copy of the GNU General Public License
21
21
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
22
22
 
 
23
from email.mime.multipart import MIMEMultipart
 
24
 
23
25
import abc
24
26
 
25
27
from cloudinit import importer
27
29
from cloudinit import user_data as ud
28
30
from cloudinit import util
29
31
 
 
32
from cloudinit.filters import launch_index
 
33
 
30
34
DEP_FILESYSTEM = "FILESYSTEM"
31
35
DEP_NETWORK = "NETWORK"
32
36
DS_PREFIX = 'DataSource'
59
63
        else:
60
64
            self.ud_proc = ud_proc
61
65
 
62
 
    def get_userdata(self):
 
66
    def get_userdata(self, apply_filter=False):
63
67
        if self.userdata is None:
64
 
            raw_data = self.get_userdata_raw()
65
 
            self.userdata = self.ud_proc.process(raw_data)
 
68
            self.userdata = self.ud_proc.process(self.get_userdata_raw())
 
69
        if apply_filter:
 
70
            return self._filter_userdata(self.userdata)
66
71
        return self.userdata
67
72
 
68
73
    @property
 
74
    def launch_index(self):
 
75
        if not self.metadata:
 
76
            return None
 
77
        if 'launch-index' in self.metadata:
 
78
            return self.metadata['launch-index']
 
79
        return None
 
80
 
 
81
    def _filter_userdata(self, processed_ud):
 
82
        filters = [
 
83
            launch_index.Filter(util.safe_int(self.launch_index)),
 
84
        ]
 
85
        new_ud = processed_ud
 
86
        for f in filters:
 
87
            new_ud = f.apply(new_ud)
 
88
        return new_ud
 
89
 
 
90
    @property
69
91
    def is_disconnected(self):
70
92
        return False
71
93