def chaincode_deploy(self, chaincode_path=DEFAULT_CHAINCODE_PATH,
                         type=CHAINCODE_LANG_GO,
                         function=DEFAULT_CHAINCODE_INIT_FUNC,
                         args=DEFAULT_CHAINCODE_INIT_ARGS, id=1,
                         secure_context=None,
                         confidentiality_level=CHAINCODE_CONFIDENTIAL_PUB,
                         metadata=None,
                         chaincode_name=None):
        """
        POST host:port/chaincode

        {
          "jsonrpc": "2.0",
          "method": "deploy",
          "params": {
            "type": 1,
            "chaincodeID":{
                "path":"github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02"
            },
            "ctorMsg": {
            "function":"init",
            "args":["a", "1000", "b", "2000"]
            }
          },
          "id": 1
        }

        :param chaincode_path: path of the chaincode in local or repo URL
        :param type:
        :param function:
        :param args:
        :param id:
        :param secure_context:
        :param confidentiality_level:
        :param metadata:
        :param chaincode_name: chaincode name is only required in dev mode. If
        chaincode_name then chaincodeID will use chaincode_name
        :return: json obj of the chaincode instance
        """
        chaincodeID = {"name": chaincode_name} if chaincode_name else \
                      {"path": chaincode_path}
        return self._exec_action(method="deploy", type=type,
                                 chaincodeID=chaincodeID,
                                 function=function, args=args, id=id,
                                 secure_context=secure_context,
                                 confidentiality_level=confidentiality_level,
                                 metadata=metadata)