예제 #1
0
파일: views.py 프로젝트: sunny121li/cello
    def create(self, request):
        """
        Create Organization

        :param request: create parameter
        :return: organization ID
        :rtype: uuid
        """
        serializer = OrganizationCreateBody(data=request.data)
        if serializer.is_valid(raise_exception=True):
            name = serializer.validated_data.get("name")
            try:
                Organization.objects.get(name=name)
            except ObjectDoesNotExist:
                pass
            else:
                raise ResourceExists

            CryptoConfig(name).create()
            CryptoGen(name).generate()

            msp, tls = self._conversion_msp_tls(name)

            organization = Organization(name=name, msp=msp, tls=tls)
            organization.save()

            response = OrganizationIDSerializer(data=organization.__dict__)
            if response.is_valid(raise_exception=True):
                return Response(response.validated_data,
                                status=status.HTTP_201_CREATED)
예제 #2
0
파일: views.py 프로젝트: yeasy/cello
    def create(self, request):
        """
        Create Node

        :param request: create parameter
        :return: node ID
        :rtype: uuid
        """
        try:
            serializer = NodeCreateBody(data=request.data)
            if serializer.is_valid(raise_exception=True):
                node_name = serializer.validated_data.get("name")
                node_type = serializer.validated_data.get("type")
                num = serializer.validated_data.get("num")
                organization = request.user.organization

                agent = organization.agent.get()
                if agent:
                    nodes = Node.objects.filter(name=node_name + "0",
                                                organization=organization,
                                                type=node_type)
                    if nodes:
                        raise ResourceExists
                else:
                    raise NoResource
                for n in range(num):

                    name = node_name + str(n)

                    urls = "http://{}.{}".format(name, organization.name)
                    nodes = {"type": node_type, "Specs": [name]}
                    CryptoConfig(organization.name).update(nodes)
                    CryptoGen(organization.name).extend()
                    self._generate_config(node_type, organization.name, name)
                    msp, tls, cfg = self._conversion_msp_tls_cfg(
                        node_type, organization.name, name)

                    node = Node(name=name,
                                organization=organization,
                                urls=urls,
                                type=node_type,
                                msp=msp,
                                tls=tls,
                                agent=agent,
                                config_file=cfg)
                    node.save()

                    self._set_port(node_type, node, agent)

                response = NodeIDSerializer(data=node.__dict__)
                if response.is_valid(raise_exception=True):
                    return Response(ok(response.validated_data),
                                    status=status.HTTP_201_CREATED)
        except (ResourceExists, NoResource) as e:
            raise e
        except Exception as e:
            return Response(err(e.args), status=status.HTTP_400_BAD_REQUEST)
예제 #3
0
    def create(self, request):

        serializer = NodeCreateBody(data=request.data)

        if serializer.is_valid(raise_exception=True):
            node_name = serializer.validated_data.get("name")
            node_type = serializer.validated_data.get("type")
            node_urls = serializer.validated_data.get("urls")
            organization = serializer.validated_data.get("organization")
            org_name = organization["name"]
            try:
                Node.objects.get(name=node_name)
            except ObjectDoesNotExist:
                pass

            org = Organization.objects.get(name=org_name)

            nodes = {
                "type": node_type,
                "Specs": [node_name]
            }
            CryptoConfig(org_name).update(nodes)
            CryptoGen(org_name).extend()
            if node_type == "peer":
                dir_msp = "{}/{}/crypto-config/peerOrganizations/{}/peers/{}/msp"\
                    .format(CELLO_HOME, org_name, org_name, node_name+"."+org_name)
            else:
                dir_msp = "{}/{}/crypto-config/ordererOrganizations/{}/orderers/{}/msp"\
                    .format(CELLO_HOME, org_name, org_name.split(".", 1)[1], node_name+"."+org_name)

            zipDir(dir_msp, "/opt/msp.zip")
            f_msp = open("/opt/msp.zip", "rb")
            print(chardet.detect(f_msp.readline()))

            if node_type == "peer":
                dir_tls = "{}/{}/crypto-config/peerOrganizations/{}/peers/{}/tls" \
                    .format(CELLO_HOME, org_name, org_name, node_name + "." + org_name)
            else:
                dir_tls = "{}/{}/crypto-config/ordererOrganizations/{}/orderers/{}/msp"\
                    .format(CELLO_HOME, org_name, org_name.split(".", 1)[1], node_name+"."+org_name)

            zipDir(dir_tls, "/opt/tls.zip")
            f_tls = open("/opt/tls.zip", "rb")

            node = Node(name=node_name, organization=org, urls=node_urls, type=node_type)
            node.msp.save("msp.zip", File(f_msp))
            node.tls.save("tls.zip", File(f_tls))
            node.save()
            f_msp.close()
            f_tls.close()
            response = NodeIDSerializer(data=node.__dict__)
            if response.is_valid(raise_exception=True):
                return Response(
                    response.validated_data, status=status.HTTP_201_CREATED
                )
예제 #4
0
    def create(self, request):
        """
        Create Node

        :param request: create parameter
        :return: node ID
        :rtype: uuid
        """
        serializer = NodeCreateBody(data=request.data)
        if serializer.is_valid(raise_exception=True):
            #self._validate_organization(request)
            name = serializer.validated_data.get("name")
            type = serializer.validated_data.get("type")
            urls = serializer.validated_data.get("urls")
            organization = serializer.validated_data.get("organization")

            org = Organization.objects.get(id=organization)
            if org:
                pass
            else:
                raise NoResource
            nodes = {
                "type": type,
                "Specs": [name]
            }
            CryptoConfig(org.name).update(nodes)
            CryptoGen(org.name).extend()
            self._generate_config(type, org.name, name, urls.split(":")[2])
            msp, tls, cfg = self._conversion_msp_tls_cfg(type, org.name, name)

            node = Node(
                name=name,
                org=org,
                urls=urls,
                type=type,
                msp=msp,
                tls=tls,
                config_file=cfg
            )
            node.save()

            response = NodeIDSerializer(data=node.__dict__)
            if response.is_valid(raise_exception=True):
                return Response(
                    response.validated_data, status=status.HTTP_201_CREATED
                )
예제 #5
0
    def create(self, request):

        serializer = OrganizationCreateBody(data=request.data)
        if serializer.is_valid(raise_exception=True):
            org_name = serializer.validated_data.get("name")
            org_type = serializer.validated_data.get("type")
            try:
                Organization.objects.get(name=org_name)
            except ObjectDoesNotExist:
                pass

            CryptoConfig(org_name).create()
            CryptoGen(org_name).generate()

            organization = Organization(name=org_name)
            organization.save()

            response = OrganizationIDSerializer(data=organization.__dict__)
            if response.is_valid(raise_exception=True):
                return Response(response.validated_data,
                                status=status.HTTP_201_CREATED)