Esempio n. 1
0
def handle_delivery(message):
    logger.info("Got: " + str(message))
    try:
        message = message.decode()
    except (UnicodeDecodeError, AttributeError):
        pass
    parsed_json_message = json.loads(message)
    owner = parsed_json_message['owner']
    tosca_file_name = 'tosca_template'
    tosca_template_dict = parsed_json_message['toscaTemplate']

    tosca_template_path = save_tosca_template(tosca_template_dict)

    tosca_helper = ToscaHelper(sure_tosca_base_url, tosca_template_path)
    # nodes_to_deploy = tosca_helper.get_application_nodes()
    nodes_pairs = tosca_helper.get_deployment_node_pairs()

    deployService = DeployService(semaphore_base_url=semaphore_base_url, semaphore_username=semaphore_username,
                                  semaphore_password=semaphore_password)
    for node_pair in nodes_pairs:
        deployService.deploy(node_pair)

    response = {'toscaTemplate': tosca_template_dict}
    output_current_milli_time = int(round(time.time() * 1000))
    response["creationDate"] = output_current_milli_time
    logger.info("Returning Deployment")
    logger.info("Output message:" + json.dumps(response))
    return json.dumps(response)
Esempio n. 2
0
    def test(self):
        parsed_json_message = self.get_request_message()
        tosca_template_path = self.get_tosca_template_path(parsed_json_message)
        # owner = parsed_json_message['owner']

        tosca_service_is_up = ToscaHelper.service_is_up(sure_tosca_base_url)
        semaphore_is_up = ToscaHelper.service_is_up(semaphore_base_url)

        if tosca_service_is_up and semaphore_is_up:
            tosca_helper = ToscaHelper(sure_tosca_base_url,
                                       tosca_template_path)
            self.assertIsNotNone(tosca_helper.doc_id)
            nodes_to_deploy = tosca_helper.get_application_nodes()
            self.assertIsNotNone(nodes_to_deploy)
            nodes_pairs = tosca_helper.get_deployment_node_pipeline()
            self.assertIsNotNone(nodes_pairs)

            username = '******'
            deployService = DeployService(
                polemarch_base_url=polemarch_base_url,
                polemarch_username=username,
                polemarch_password='******',
                semaphore_base_url=semaphore_base_url,
                semaphore_username=username,
                semaphore_password='******',
                vms=tosca_helper.get_vms())
            for node_pair in nodes_pairs:
                deployService.deploy(node_pair)
Esempio n. 3
0
    def test_deploy_service(self):
        parsed_json_message = self.get_request_message(
            'https://raw.githubusercontent.com/qcdis-sdia/sdia-deployer/master/sample_requests/deploy_request_mog.json'
        )
        tosca_template_path = self.get_tosca_template_path(parsed_json_message)
        # owner = parsed_json_message['owner']

        tosca_service_is_up = ToscaHelper.service_is_up(sure_tosca_base_url)
        semaphore_is_up = ToscaHelper.service_is_up(semaphore_base_url)

        if tosca_service_is_up and semaphore_is_up:
            tosca_helper = ToscaHelper(sure_tosca_base_url,
                                       tosca_template_path)
            self.assertIsNotNone(tosca_helper.doc_id)
            nodes_to_deploy = tosca_helper.get_application_nodes()
            self.assertIsNotNone(nodes_to_deploy)
            nodes_pairs = tosca_helper.get_deployment_node_pipeline()
            self.assertIsNotNone(nodes_pairs)

            username = '******'
            deployService = DeployService(
                semaphore_base_url=semaphore_base_url,
                semaphore_username=username,
                semaphore_password='******',
                vms=tosca_helper.get_vms())
            for node_pair in nodes_pairs:
                deployService.deploy(node_pair)
Esempio n. 4
0
    def semaphore(self, tosca_template_path=None, tosca_template_dict=None):
        tosca_helper = ToscaHelper(sure_tosca_base_url, tosca_template_path)
        nodes = tosca_helper.get_application_nodes()
        # nodes = tosca_helper.get_deployment_node_pipeline()

        deployService = DeployService(semaphore_base_url=semaphore_base_url,
                                      semaphore_username=semaphore_username,
                                      semaphore_password=semaphore_password,
                                      vms=tosca_helper.get_vms())
        try:
            for node in nodes:
                updated_node = deployService.deploy(node)
                if isinstance(updated_node, list):
                    for node in updated_node:
                        tosca_template_dict = tosca_helper.set_node(
                            node, tosca_template_dict)
                        # logger.info("tosca_template_dict :" + json.dumps(tosca_template_dict))
                else:
                    tosca_template_dict = tosca_helper.set_node(
                        updated_node, tosca_template_dict)
                    # logger.info("tosca_template_dict :" + json.dumps(tosca_template_dict))

            response = {'toscaTemplate': tosca_template_dict}
            output_current_milli_time = int(round(time.time() * 1000))
            response["creationDate"] = output_current_milli_time
            logger.info("Returning Deployment")
            logger.info("Output message:" + json.dumps(response))
            return json.dumps(response)
        except Exception as e:
            track = traceback.format_exc()
            print(track)
            raise
Esempio n. 5
0
def download_log():
    file_name, content = DeployService.download_log(**request.args.to_dict())
    response = make_response(content)
    mime_type = mimetypes.guess_type(file_name)[0]
    response.headers['Content-Type'] = mime_type
    response.headers['Content-Disposition'] = 'attachment; filename={}'.format(
        file_name.encode().decode('latin-1'))
    return response
Esempio n. 6
0
def handle_delivery(message):
    logger.info("Got: " + str(message))
    try:
        message = message.decode()
    except (UnicodeDecodeError, AttributeError):
        pass
    parsed_json_message = json.loads(message)
    owner = parsed_json_message['owner']
    tosca_file_name = 'tosca_template'
    tosca_template_dict = parsed_json_message['toscaTemplate']

    tosca_template_path = save_tosca_template(tosca_template_dict)

    tosca_helper = ToscaHelper(sure_tosca_base_url, tosca_template_path)
    # nodes_to_deploy = tosca_helper.get_application_nodes()
    nodes = tosca_helper.get_deployment_node_pipeline()

    deployService = DeployService(semaphore_base_url=semaphore_base_url,
                                  semaphore_username=semaphore_username,
                                  semaphore_password=semaphore_password,
                                  vms=tosca_helper.get_vms())
    try:
        for node in nodes:
            updated_node = deployService.deploy(node)
            if isinstance(updated_node, list):
                for node in updated_node:
                    tosca_template_dict = tosca_helper.set_node(
                        node, tosca_template_dict)
                    # logger.info("tosca_template_dict :" + json.dumps(tosca_template_dict))
            else:
                tosca_template_dict = tosca_helper.set_node(
                    updated_node, tosca_template_dict)
                # logger.info("tosca_template_dict :" + json.dumps(tosca_template_dict))

        response = {'toscaTemplate': tosca_template_dict}
        output_current_milli_time = int(round(time.time() * 1000))
        response["creationDate"] = output_current_milli_time
        logger.info("Returning Deployment")
        logger.info("Output message:" + json.dumps(response))
        return json.dumps(response)
    except Exception as e:
        track = traceback.format_exc()
        print(track)
        raise
Esempio n. 7
0
    def test(self):
        logger = logging.getLogger(__name__)
        message_file_path = str(
            Path.home()) + '/Downloads/message_deploy_request.json'
        if os.path.isfile(message_file_path):
            with open(message_file_path, 'r') as stream:
                parsed_json_message = json.load(stream)

            # owner = parsed_json_message['owner']
            tosca_file_name = 'tosca_template'
            tosca_template_dict = parsed_json_message['toscaTemplate']

            tmp_path = tempfile.mkdtemp()
            tosca_template_path = tmp_path + os.path.sep + 'toscaTemplate.yml'
            with open(tosca_template_path, 'w') as outfile:
                yaml.dump(tosca_template_dict,
                          outfile,
                          default_flow_style=False)

            sure_tosca_base_url = 'http://127.0.0.1:8081/tosca-sure/1.0.0'
            semaphore_base_url = 'http://127.0.0.1:3000/api'
            tosca_service_is_up = ToscaHelper.service_is_up(
                sure_tosca_base_url)
            semaphore_is_up = ToscaHelper.service_is_up(semaphore_base_url)

            if tosca_service_is_up and semaphore_is_up:
                tosca_helper = ToscaHelper(sure_tosca_base_url,
                                           tosca_template_path)
                self.assertIsNotNone(tosca_helper.doc_id)
                nodes_to_deploy = tosca_helper.get_application_nodes()
                self.assertIsNotNone(nodes_to_deploy)
                nodes_pairs = tosca_helper.get_deployment_node_pipeline()
                self.assertIsNotNone(nodes_pairs)

                username = '******'
                deployService = DeployService(
                    polemarch_username=username,
                    polemarch_password='******',
                    semaphore_base_url=semaphore_base_url,
                    semaphore_username=username,
                    semaphore_password='******')
                for node_pair in nodes_pairs:
                    deployService.deploy(node_pair)
Esempio n. 8
0
def delete_pod():
    project_id = request.json.get('project_id')
    name = request.json.get('name')
    namespace = request.json.get('namespace')
    return Response.success(data=DeployService.delete_namespaced_pod(
        project_id=project_id, name=name, namespace=namespace))
Esempio n. 9
0
def start():
    project_id = request.json.get('project_id')
    image_name = request.json.get('image_name')
    return Response.success(
        data=DeployService.deploy(g.user, project_id, image_name))
Esempio n. 10
0
 def on_event(self, message):
     project_id = message.get('project_id')
     DeployService.list_project_event(project_id, send_event=self.send_event)
Esempio n. 11
0
 def on_pod(self, message):
     project_id = message.get('project_id')
     DeployService.list_project_pod(project_id, send_pod=self.send_pod)
Esempio n. 12
0
 def on_replica(self, message):
     project_id = message.get('project_id')
     DeployService.list_project_replica(project_id, send_replica=self.send_replica)