void deploy_svc_service_impl::on_get_service_list_cli(void *context, int argc, const char **argv, dsn_cli_reply *reply)
        {
            dassert(context == (void*)this, "context must be this");

            deploy_info_list dlist;
            std::string package_id;

            if (argc >=1)
            {
                error_code err = unmarshall_json(argv[0], "package_id", package_id);
                if (err != ERR_OK)
                {
                    //TODO: need raise error here?
                    package_id = std::string("");
                }
            }
            on_get_service_list_internal(package_id, dlist);

            std::string* resp_json = new std::string();
            *resp_json = marshall_json(dlist);
            reply->context = resp_json;
            reply->message = (const char*)resp_json->c_str();
            reply->size = resp_json->size();
            return;
        }
        void deploy_svc_service_impl::on_get_service_list(const std::string& package_id, ::dsn::rpc_replier<deploy_info_list>& reply)
        {
            deploy_info_list dlist;

            on_get_service_list_internal(package_id, dlist);

            reply(dlist);
        }