예제 #1
0
파일: admin.py 프로젝트: yunhaia/poppy
    def post(self):
        request_json = json.loads(pecan.request.body.decode('utf-8'))
        project_id = request_json.get('project_id', None)
        service_id = request_json.get('service_id', None)
        domain_name = request_json.get('domain_name', None)
        new_cert = request_json.get('new_cert', None)
        cert_status = request_json.get('cert_status', 'deployed')

        if not helpers.is_valid_domain_name(domain_name):
            pecan.abort(400, detail='Domain {0} is not valid'.format(
                domain_name))

        # Akamai specific suffix:
        if not new_cert.endswith("edgekey.net"):
            new_cert = new_cert + ".edgekey.net"

        try:
            self._driver.manager.services_controller.migrate_domain(
                project_id, service_id, domain_name, new_cert, cert_status)
        except errors.ServiceNotFound:
            pecan.abort(404, detail='Service {0} could not be found'.format(
                service_id))
        except (LookupError, ValueError):
            pecan.abort(404, detail='Domain {0} could not be found'.format(
                domain_name))

        return pecan.Response(None, 202)
예제 #2
0
    def create_ssl_certificate(self, project_id, cert_obj):

        if (not validators.is_valid_domain_name(cert_obj.domain_name)) or \
                (validators.is_root_domain(
                    domain.Domain(cert_obj.domain_name).to_dict())):
            # here created a http domain object but it does not matter http or
            # https
            raise ValueError('%s must be a valid non-root domain' %
                             cert_obj.domain_name)

        try:
            flavor = self.flavor_controller.get(cert_obj.flavor_id)
        # raise a lookup error if the flavor is not found
        except LookupError as e:
            raise e

        try:
            self.storage.create_certificate(project_id, cert_obj)
        # ValueError will be raised if the cert_info has already existed
        except ValueError as e:
            raise e

        providers = [p.provider_id for p in flavor.providers]
        kwargs = {
            'providers_list_json': json.dumps(providers),
            'project_id': project_id,
            'cert_obj_json': json.dumps(cert_obj.to_dict()),
            'context_dict': context_utils.get_current().to_dict()
        }
        self.distributed_task_controller.submit_task(
            create_ssl_certificate.create_ssl_certificate, **kwargs)
        return kwargs
예제 #3
0
    def post(self):
        request_json = json.loads(pecan.request.body.decode('utf-8'))
        project_id = request_json.get('project_id', None)
        service_id = request_json.get('service_id', None)
        domain_name = request_json.get('domain_name', None)
        new_cert = request_json.get('new_cert', None)
        cert_status = request_json.get('cert_status', 'deployed')

        if not helpers.is_valid_domain_name(domain_name):
            pecan.abort(400,
                        detail='Domain {0} is not valid'.format(domain_name))

        # Akamai specific suffix:
        if not new_cert.endswith("edgekey.net"):
            new_cert = new_cert + ".edgekey.net"

        try:
            self._driver.manager.services_controller.migrate_domain(
                project_id, service_id, domain_name, new_cert, cert_status)
        except errors.ServiceNotFound:
            pecan.abort(
                404,
                detail='Service {0} could not be found'.format(service_id))
        except (LookupError, ValueError):
            pecan.abort(
                404,
                detail='Domain {0} could not be found'.format(domain_name))

        return pecan.Response(None, 202)
예제 #4
0
    def create_ssl_certificate(self, project_id, cert_obj):

        if (not validators.is_valid_domain_name(cert_obj.domain_name)) or \
                (validators.is_root_domain(
                    domain.Domain(cert_obj.domain_name).to_dict())):
            # here created a http domain object but it does not matter http or
            # https
            raise ValueError('%s must be a valid non-root domain' %
                             cert_obj.domain_name)

        try:
            flavor = self.flavor_controller.get(cert_obj.flavor_id)
        # raise a lookup error if the flavor is not found
        except LookupError as e:
            raise e

        try:
            self.storage_controller.create_cert(
                project_id,
                cert_obj)
        # ValueError will be raised if the cert_info has already existed
        except ValueError as e:
            raise e

        providers = [p.provider_id for p in flavor.providers]
        kwargs = {
            'providers_list_json': json.dumps(providers),
            'project_id': project_id,
            'cert_obj_json': json.dumps(cert_obj.to_dict()),
            'context_dict': context_utils.get_current().to_dict()
        }
        self.distributed_task_controller.submit_task(
            create_ssl_certificate.create_ssl_certificate,
            **kwargs)
        return kwargs
예제 #5
0
파일: admin.py 프로젝트: jc7998/poppy
    def post(self):
        request_json = json.loads(pecan.request.body.decode("utf-8"))
        project_id = request_json.get("project_id", None)
        service_id = request_json.get("service_id", None)
        domain_name = request_json.get("domain_name", None)
        new_cert = request_json.get("new_cert", None)

        if not helpers.is_valid_domain_name(domain_name):
            pecan.abort(400, detail="Domain {0} is not valid".format(domain_name))

        # Akamai specific suffix:
        if not new_cert.endswith("edgekey.net"):
            new_cert = new_cert + ".edgekey.net"

        try:
            self._driver.manager.services_controller.migrate_domain(project_id, service_id, domain_name, new_cert)
        except errors.ServiceNotFound:
            pecan.abort(404, detail="Service {0} could not be found".format(service_id))
        except LookupError:
            pecan.abort(404, detail="Domain {0} could not be found".format(domain_name))

        return pecan.Response(None, 202)
예제 #6
0
파일: admin.py 프로젝트: vanzhiganov/poppy
    def patch_one(self, service_id):
        request_json = json.loads(pecan.request.body.decode('utf-8'))
        project_id = request_json.get('project_id', None)
        domain_name = request_json.get('domain_name', None)
        operator_url = request_json.get('operator_url', None)
        provider_url = request_json.get('provider_url', None)

        if not helpers.is_valid_domain_name(domain_name):
            pecan.abort(400,
                        detail='Domain {0} is not valid'.format(domain_name))

        changes_made = False
        try:
            changes_made = self._driver.manager.services_controller.\
                update_access_url_service(
                    project_id,
                    service_id,
                    access_url_changes={
                        'domain_name': domain_name,
                        'operator_url': operator_url,
                        'provider_url': provider_url
                    }
                )
        except errors.ServiceNotFound:
            pecan.abort(
                404,
                detail='Service {0} could not be found'.format(service_id))
        except (errors.InvalidOperation, errors.InvalidResourceName) as e:
            pecan.abort(400, detail='{0}'.format(e))
        except (LookupError, ValueError):
            pecan.abort(
                404,
                detail='Domain {0} could not be found'.format(domain_name))

        status_code = 201 if changes_made is True else 202
        return pecan.Response(None, status=status_code)