~ubuntu-branches/ubuntu/raring/maas/raring-proposed

« back to all changes in this revision

Viewing changes to src/provisioningserver/plugin.py

  • Committer: Package Import Robot
  • Author(s): Andres Rodriguez
  • Date: 2012-07-17 08:28:36 UTC
  • mfrom: (1.1.16)
  • Revision ID: package-import@ubuntu.com-20120717082836-ucb2vou8tqg353eq
Tags: 0.1+bzr777+dfsg-0ubuntu1
* New upstream release
* Only run 'maas' command as root. (LP: #974046)
  - debian/extras/maas: Check id.
  - debian/maas.install: Install in 'sbin'.
* debian/maas.postinst:
  - restart apache2 after everything gets processed.
  - Update version to handle upgrades.
* debian/extras/maas-provision: Add wrapper to access 'maasprovisiong'
  command line.
* debian/patches/99_temporary_fix_path.patch: Dropped. No longer needed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
__metaclass__ = type
13
13
__all__ = []
14
14
 
15
 
import sys
16
 
sys.path.append('/usr/share/maas')
17
 
 
18
 
from getpass import getuser
19
 
 
20
 
from formencode import Schema
21
 
from formencode.validators import (
22
 
    Int,
23
 
    RequireIfPresent,
24
 
    String,
25
 
    URL,
26
 
    )
27
15
from provisioningserver.amqpclient import AMQFactory
28
16
from provisioningserver.cobblerclient import CobblerSession
29
 
from provisioningserver.pxe.tftppath import locate_tftp_path
 
17
from provisioningserver.config import Config
30
18
from provisioningserver.remote import ProvisioningAPI_XMLRPC
31
19
from provisioningserver.services import (
32
20
    LogService,
68
56
    Resource,
69
57
    )
70
58
from twisted.web.server import Site
71
 
import yaml
72
59
from zope.interface import implementer
73
60
 
74
61
 
110
97
        raise NotImplementedError()
111
98
 
112
99
 
113
 
class ConfigOops(Schema):
114
 
    """Configuration validator for OOPS options."""
115
 
 
116
 
    if_key_missing = None
117
 
 
118
 
    directory = String(if_missing=b"")
119
 
    reporter = String(if_missing=b"")
120
 
 
121
 
    chained_validators = (
122
 
        RequireIfPresent("reporter", present="directory"),
123
 
        )
124
 
 
125
 
 
126
 
class ConfigBroker(Schema):
127
 
    """Configuration validator for message broker options."""
128
 
 
129
 
    if_key_missing = None
130
 
 
131
 
    host = String(if_missing=b"localhost")
132
 
    port = Int(min=1, max=65535, if_missing=5673)
133
 
    username = String(if_missing=getuser())
134
 
    password = String(if_missing=b"test")
135
 
    vhost = String(if_missing="/")
136
 
 
137
 
 
138
 
class ConfigCobbler(Schema):
139
 
    """Configuration validator for connecting to Cobbler."""
140
 
 
141
 
    if_key_missing = None
142
 
 
143
 
    url = URL(
144
 
        add_http=True, require_tld=False,
145
 
        if_missing=b"http://localhost/cobbler_api",
146
 
        )
147
 
    username = String(if_missing=getuser())
148
 
    password = String(if_missing=b"test")
149
 
 
150
 
 
151
 
class ConfigTFTP(Schema):
152
 
    """Configuration validator for the TFTP service."""
153
 
 
154
 
    if_key_missing = None
155
 
 
156
 
    root = String(if_missing=locate_tftp_path())
157
 
    port = Int(min=1, max=65535, if_missing=5244)
158
 
    generator = URL(
159
 
        add_http=True, require_tld=False,
160
 
        if_missing=b"http://localhost:5243/api/1.0/pxeconfig",
161
 
        )
162
 
 
163
 
 
164
 
class Config(Schema):
165
 
    """Configuration validator."""
166
 
 
167
 
    if_key_missing = None
168
 
 
169
 
    interface = String(if_empty=b"", if_missing=b"127.0.0.1")
170
 
    port = Int(min=1, max=65535, if_missing=5241)
171
 
    username = String(not_empty=True, if_missing=getuser())
172
 
    password = String(not_empty=True)
173
 
    logfile = String(if_empty=b"pserv.log", if_missing=b"pserv.log")
174
 
    oops = ConfigOops
175
 
    broker = ConfigBroker
176
 
    cobbler = ConfigCobbler
177
 
    tftp = ConfigTFTP
178
 
 
179
 
    @classmethod
180
 
    def parse(cls, stream):
181
 
        """Load a YAML configuration from `stream` and validate."""
182
 
        return cls.to_python(yaml.safe_load(stream))
183
 
 
184
 
    @classmethod
185
 
    def load(cls, filename):
186
 
        """Load a YAML configuration from `filename` and validate."""
187
 
        with open(filename, "rb") as stream:
188
 
            return cls.parse(stream)
189
 
 
190
 
 
191
100
class Options(usage.Options):
192
101
    """Command line options for the provisioning server."""
193
102