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()))
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 })
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',
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',