Example #1
0
def start(servicetype):
    """eg: POST /start/php

    POSTed values must contain username and password.

    Returns a dictionary with service data (manager's vmid and IP address,
    service name and ID) in case of successful authentication and correct
    service creation. False is returned otherwise.
    """
    user = auth_user(request.values.get('username', ''), 
        request.values.get('password', ''))

    if not user:
        # Authentication failed
        return build_response(simplejson.dumps(False))

    # Check if we got a valid service type
    if servicetype not in manager_services.keys():
        return build_response(jsonify({ 'error': True, 
                                        'msg': 'Unknown service type' }))

    # New service with default name, proper servicetype and user relationship
    s = Service(name="New %s service" % servicetype, type=servicetype, 
        user=user)
                
    db.session.add(s)
    # flush() is needed to get auto-incremented sid
    db.session.flush()
    s.manager, s.vmid = cloud.start(servicetype, s.sid, user.uid)
    db.session.commit()
    return build_response(jsonify(s.to_dict()))
Example #2
0
    def add_service(self, kwargs):
        """Expose methods relative to a specific service manager"""

        exp_params = [('service_type', is_in_list(manager_services.keys()))]
        try:
            service_type = check_arguments(exp_params, kwargs)
        except Exception as ex:
            return HttpErrorResponse("%s" % ex)

        self.kwargs.update(kwargs)
        services = manager_services

        try:
            module = __import__(services[service_type]['module'], globals(), locals(), ['*'])
        except ImportError:
            self.state_set(self.S_ERROR)
            raise Exception('Could not import module containing service class "%(module)s"' %
                services[service_type])

        # Get the appropriate class for this service
        service_class = services[service_type]['class']
        try:
            instance_class = getattr(module, service_class)
        except AttributeError:
            self.state_set(self.S_ERROR)
            raise Exception('Could not get service class %s from module %s' % (service_class, module))

        self.state_set(self.S_ADAPTING)

        #probably lock it
        self.service_id = self.service_id + 1

        service_config_parser = self.__copy_config_parser(self.config_parser)
        self._add_manager_configuration(service_config_parser, str(self.service_id), service_type)
        # self._run_manager_start_script(service_config_parser, service_type)

        #Create an instance of the service class
        service_insance = instance_class(service_config_parser, **self.kwargs)

        self.httpsserver.instances[self.service_id] = service_insance
        service_manager_exposed_functions = service_insance.get_exposed_methods()

        for http_method in service_manager_exposed_functions:
           for func_name in service_manager_exposed_functions[http_method]:
               self.httpsserver._register_method(http_method, self.service_id, func_name, service_manager_exposed_functions[http_method][func_name])

        self.state_set(self.S_RUNNING)
        return HttpJsonResponse({ 'service_id': self.service_id })
Example #3
0
from cpsdirector import db

from cpsdirector.common import log
from cpsdirector.common import build_response

from cpsdirector import cloud as manager_controller

from cpsdirector import common

from conpaas.core.services import manager_services
from conpaas.core.https import client

service_page = Blueprint('service_page', __name__)

valid_services = manager_services.keys()

class Service(db.Model):
    sid = db.Column(db.Integer, primary_key=True,
        autoincrement=True)
    name = db.Column(db.String(256))
    type = db.Column(db.String(32))
    state = db.Column(db.String(32))
    created = db.Column(db.DateTime)
    manager = db.Column(db.String(512))
    vmid = db.Column(db.String(256))
    cloud = db.Column(db.String(128))
    subnet = db.Column(db.String(18))

    user_id = db.Column(db.Integer, db.ForeignKey('user.uid'))
    user = db.relationship('User', backref=db.backref('services',
Example #4
0
from datetime import datetime

from cpsdirector import db

from cpsdirector.common import log
from cpsdirector.common import build_response

from cpsdirector import cloud as manager_controller

from cpsdirector import common

from conpaas.core.services import manager_services

service_page = Blueprint('service_page', __name__)

valid_services = manager_services.keys()


class Service(db.Model):
    sid = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(256))
    type = db.Column(db.String(32))
    state = db.Column(db.String(32))
    created = db.Column(db.DateTime)
    manager = db.Column(db.String(512))
    vmid = db.Column(db.String(256))
    cloud = db.Column(db.String(128))
    subnet = db.Column(db.String(18))

    user_id = db.Column(db.Integer, db.ForeignKey('user.uid'))
    user = db.relationship('User',