From 27d4e28e461ca3d3884b8bd7014088d47af7c381 Mon Sep 17 00:00:00 2001 From: proposalbot Date: Thu, 24 Nov 2022 13:29:14 +0000 Subject: [PATCH] Changes to gaussdb_mysql_api-ref from docs/doc-exports#271 (gaussdb API Initial Reviewed-by: Boka, Ladislav Co-authored-by: proposalbot Co-committed-by: proposalbot --- .../images/en-us_image_0000001372529646.png | Bin 0 -> 51740 bytes .../images/en-us_image_0000001422968749.gif | Bin 0 -> 51895 bytes .../images/en-us_image_0000001423128721.jpg | Bin 0 -> 139826 bytes api-ref/source/api/index.rst | 24 ++ .../creating_a_db_instance.rst | 332 ++++++++++++++++++ .../deleting_a_db_instance.rst | 75 ++++ .../api/managing_db_instances/index.rst | 20 ++ .../querying_a_db_instance_list.rst | 240 +++++++++++++ .../querying_details_of_a_db_instance.rst | 305 ++++++++++++++++ .../managing_parameter_templates/index.rst | 14 + .../querying_a_parameter_template.rst | 119 +++++++ .../configuring_resource_quotas.rst | 130 +++++++ api-ref/source/api/managing_quotas/index.rst | 18 + .../modifying_resource_quotas.rst | 132 +++++++ .../querying_resource_quotas.rst | 116 ++++++ .../source/api/obtaining_task_information.rst | 186 ++++++++++ .../api/querying_database_specifications.rst | 142 ++++++++ ..._version_information_about_a_db_engine.rst | 92 +++++ api-ref/source/api_overview.rst | 24 ++ .../appendix/abnormal_request_results.rst | 27 ++ api-ref/source/appendix/error_codes.rst | 90 +++++ .../gaussdbfor_mysql_monitoring_metrics.rst | 187 ++++++++++ api-ref/source/appendix/index.rst | 22 ++ .../appendix/obtaining_a_project_id.rst | 66 ++++ api-ref/source/appendix/status_codes.rst | 120 +++++++ .../source/before_you_start/api_calling.rst | 8 + api-ref/source/before_you_start/concepts.rst | 34 ++ .../source/before_you_start/constraints.rst | 9 + api-ref/source/before_you_start/endpoints.rst | 8 + api-ref/source/before_you_start/index.rst | 22 ++ api-ref/source/before_you_start/overview.rst | 10 + .../source/calling_apis/authentication.rst | 28 ++ api-ref/source/calling_apis/index.rst | 18 + .../calling_apis/making_an_api_request.rst | 132 +++++++ api-ref/source/calling_apis/response.rst | 62 ++++ api-ref/source/change_history.rst | 17 + api-ref/source/conf.py | 6 +- api-ref/source/index.rst | 15 +- 38 files changed, 2844 insertions(+), 6 deletions(-) create mode 100644 api-ref/source/_static/images/en-us_image_0000001372529646.png create mode 100644 api-ref/source/_static/images/en-us_image_0000001422968749.gif create mode 100644 api-ref/source/_static/images/en-us_image_0000001423128721.jpg create mode 100644 api-ref/source/api/index.rst create mode 100644 api-ref/source/api/managing_db_instances/creating_a_db_instance.rst create mode 100644 api-ref/source/api/managing_db_instances/deleting_a_db_instance.rst create mode 100644 api-ref/source/api/managing_db_instances/index.rst create mode 100644 api-ref/source/api/managing_db_instances/querying_a_db_instance_list.rst create mode 100644 api-ref/source/api/managing_db_instances/querying_details_of_a_db_instance.rst create mode 100644 api-ref/source/api/managing_parameter_templates/index.rst create mode 100644 api-ref/source/api/managing_parameter_templates/querying_a_parameter_template.rst create mode 100644 api-ref/source/api/managing_quotas/configuring_resource_quotas.rst create mode 100644 api-ref/source/api/managing_quotas/index.rst create mode 100644 api-ref/source/api/managing_quotas/modifying_resource_quotas.rst create mode 100644 api-ref/source/api/managing_quotas/querying_resource_quotas.rst create mode 100644 api-ref/source/api/obtaining_task_information.rst create mode 100644 api-ref/source/api/querying_database_specifications.rst create mode 100644 api-ref/source/api/querying_version_information_about_a_db_engine.rst create mode 100644 api-ref/source/api_overview.rst create mode 100644 api-ref/source/appendix/abnormal_request_results.rst create mode 100644 api-ref/source/appendix/error_codes.rst create mode 100644 api-ref/source/appendix/gaussdbfor_mysql_monitoring_metrics.rst create mode 100644 api-ref/source/appendix/index.rst create mode 100644 api-ref/source/appendix/obtaining_a_project_id.rst create mode 100644 api-ref/source/appendix/status_codes.rst create mode 100644 api-ref/source/before_you_start/api_calling.rst create mode 100644 api-ref/source/before_you_start/concepts.rst create mode 100644 api-ref/source/before_you_start/constraints.rst create mode 100644 api-ref/source/before_you_start/endpoints.rst create mode 100644 api-ref/source/before_you_start/index.rst create mode 100644 api-ref/source/before_you_start/overview.rst create mode 100644 api-ref/source/calling_apis/authentication.rst create mode 100644 api-ref/source/calling_apis/index.rst create mode 100644 api-ref/source/calling_apis/making_an_api_request.rst create mode 100644 api-ref/source/calling_apis/response.rst create mode 100644 api-ref/source/change_history.rst diff --git a/api-ref/source/_static/images/en-us_image_0000001372529646.png b/api-ref/source/_static/images/en-us_image_0000001372529646.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a37a976d4576d256107faeb20bd06794b51b43 GIT binary patch literal 51740 zcmdSB2T)Yox-QygMZtuM2z%r{>b+O@Jd0h6-E_~MbIdXR|4U;&lD{lTOT$P*B9UmN zrOqpmNNYk!q}2=?*W;CqThBG%Kbx$j)a*zkx_89?Rs|lT+eacDAW5G;qvZU2xa+F9 zM!);w_z{hFKb2~A4#!B*_`>ds-}}d?79a| zfA#KkE*QAC{lzV-pndDNy=D7K6Em`rR&z7M)$OOFzh+t{$X{sYJ1P?|l_H~ZVjYM6 zi6!p46ZfC7%Vhd-iY$8Edbz#+)Y#2>S9UMIFWon1Kc#BqT5iIrl5UAi9+B)?Mf_T3 zv}V;#;+LJ*oF{-Dj3sRkRS z;^_`Ej^G-ZgeDo*9gL*r1@@Ik~y}ZR$sL zGOi83DkR?dRoq@@L+y=>SAl_n1#K5EUi5t>NWA__m%^tj>>H!cn`oNDA@=8le}M~^n`qFFcVCT?MF-kfvP zqE1TK_mFg7-suCcWA+<;e0~+5x6sVDy>RZ_x$0h9b#?W|U%y_PQ&didD{}<$E@WG1 z96EFe*W)_fYnd2v&!N)T!NEb&)3h?)u_z%ve)6-P-@tpHeXiQ)Mx3*=vqNl>0xu^V zmX3&s2n!8u`1$h{XN^L}H6`BA=3l?8n><$ITAXxirZ1)O*WssCA%83G zJ6ZniHEY$_jG4W?lA@wwwLUL?7@3&(EhMPJSpl)Q^3c$|5kfX+RnxUws;eJ!Y398+ z8~p;WS5-;VZrQ>=Tv_$>$S%Li!&Pe=G`UpUmh6Qs&c^La+wth`#|V+OZ0^xh)8FrB zP>vsS@besq3s&L^p6Uy?8Vogx^tYg}eVUq@GO@K)SXfwKV=A5P3uiM=OG#m;rx|FB zyJX8G`Sj`2!J#3(!{s>#{U2_+({8TP)YK%hI)3Qgqn!mdJ@dG74PxDTRN{xeqNh&HT*%=wp$5hio+%Lri^!4>IPU~@7E>Wq}!_w~V z?xtpDiit`J`I=vHxWmK49r|sIM7r7wE((i?Y!&sInWk7BW7raw`K7K-ZWqnHf_09# z$&(F|`xBKojt0uK)V)tjPfso`*6Ql&Vk@GMQ+0V>-MhE$I45VwLSaDxzpyZev_o5C zON+t#8zMEC^fdSQB_y~h(PL|=V|{)7O7j>I?{=vX^Ek@Kckk|A zjuKCmV!csq7QX30d01GO0#|TTUAQ1lJUc(X{dE++hs0toR~r8=!u@$@XkvKp;Mf>3 zvh(vru@QXta(nzGS^T@l+Awe!DOQVn37TBFW)kWe8oe`ACks9%y5zXHif46PoSepb zdgqFZi#LRAvWPD%q>^j&N`D8Yzsk*3-MMooro5?zMPO`!kw#qVt)YooelfAG*AbX- zy}bs~8hR@1^v!K;xq77-R%MP|S#L*i1{{GhP2wHoRLTABN@GP6zLz6}57%TmjvT>R z-`b$jv{%+?`dFaM!0+Cg0CBC_!%_9&M#th(FBo;IWl$QhTpJp$%E`($2i|GrVrhD{ zKjBK03Ra=_d~>FSM#eSSL?xM?o*swv5tZF8^3n1?eSMvxt}iUkl%{|CcAa+X)?+Mw z;WiFN_Vp1W30V1d%%iKN8e3EPfBcAjT=7yZFQK9K#({00#(OH|OokM%h~WfsjrLnm zT64_WWQ}t;&DuO%c6AaZu+x*Jz+tF0HD+|JWt2wWT&G?A_EBQ+nG)jWX>HB@=epse|aOrxzZxA#(=2mwoH{-i^K&8xozzp*|}1UrC48H<8+j?IJ{$1 zYD$W+xw-7^(_cT;Y9^4e-t5+6k=K^=Q$LBUPj!=?Ev_KKaI-S1hqcrD`MXC4%a zd!3SyNH@)KsT`sAzJSAY=1hDWwPBK6vu2HC7cKFw4U@}_N`UevVwL^5j!&QdMiFWp z$mR`w($3B3!?D{tbirLbiX-rGQcF@tM+g7Olku`_icYess=*f}C3A|3G@a;jQ_mla zj*C0I(hfo_8jO|3ojZ$EDCz1H>YqP7enZg@SWvA|s?h>YQn%339u2M;5sI>)7zS~N z*I{}Kh$XaD_hz!Ov1Jz&sJBI-Q=tHJdyIQyu?9>IAcGd4K-cFM z6jWTa0hi&7O8cJoJ_Qzyt^4WNjvR3q?aVJIi4?MVIr@C`^VmsopZ6~ufhtI(F@fX$ z4r?TN82G=P@1Ri+m3_Z9tmD8Qx(A1)JxXliGjtUM@306%~5aL zQ)yE>@fd3oy_0QNv(Qlv)wnRI-?Cr)lJnmRS~Z#Wi}N?7qk`fvRZvwG5@WYY%*zLJ zX%S;QlwO)%N_BQBPLpIh#WNdq6Soj1x-le==oOke*zPTt{g zrf*M(US@krnpR=_<~>~O+cti%VUoLid2qHrDwq|s=ATvt zw$9Gy^B$#pH#>>qzBN-QX4+0s?e^(S%xk1w7N**Ih3E`&F@R-%nK1Hn{cdbZxYFkS zwZ7NZ)Wqb(Up!27$HMDS3sbpt)q~}LrKzJ6oGn0Y`SK;LwN+(y z!2?(WKkK~SFk9r`mQRYROWx&kQ9wi_xuW92)a2wVdG=Qc36*!>bqt|w2lohJbmNy2 zm69wC)8yHk*VT^jnfll}Ii;=H?3Sym^6B{}?HD%;eZc76}i{iHQle(-Eia z-cQy=T;~j~p{>t&{rZJ2Pu?Lni_*xnv@|V>b??M%f!%*}GGMIa!a@x%FRuXd7m=Ep zn)te$905DIoDK>lCp%kd4~w9nAew`mhEG}+c|SUDQ93c7oX66*e`keX?2XUY96fC@ zoG^c4+s0Qo(xpq6FeQRx-6h6yi=SutckHbk!F~BXJAb>px3=~Pmv)h{%*Cze#G_Ot zB_+GeEb~O&=dzDRJJi^0EyulJ6?nd#Y@xwjI-iLZ{JyeMfS*6Mq@?8B&}Mw?Eibcz z4}Kz4AwE7uL9>?bZWIR7)nOu=+q=6<`!{u+43FqZ&Hd707gQV3Ao_FGlesIQovr+R?u+YKXuE2n_=_u7t{kJM8DST5xL1C??&HVSzyeE4%Or)wSHK93t?p?` z9In&(Sy_s0XFXkA$we04sA)xa2@w|K; zSFPm^U!K*^kr|~tV6Wb8PEPyLqLt&A&imQ*cH!fceVycFE#_&Dzb_~36AyPO)!Kle z`E{VsDDq8FIC`_8kx@%ilU@CWstp%n)GAR{6%yZN1>sF)?%!{34jGln($dlrb{g%x z>a>BjIZbn)&&8Pq0Uo@8_R8JU>_4b*6<+k7tW@~&WH z39r(xttVRuGWVd-EiQUoIOs1%4U}U2A>_-Nn4DZQSzjF0Vwy8L)!`9!$}WDC3Gh2n z$+TYlBqiOEGCeUWu)9#J#?fc=f<>Wg@dne%iva-3{Gy_q6f$TH3K`|sAM=yRW^HK$ zBHgpT9>1SPfe+|@}_{)syZm;e;6We5Bkkx)@frokH+R4UC+@Xt7rVOK_&-T6d zWfoy8?bgX1Q7xSdjC7w?YbU4TR=4SRYJIcL`xY|1TYT(pkC4mnsv|?IJDQuHp&_B? z)h*cQ_*L9sJIyTOXfCN?Rk}bX$PXqaF4JDPIHo>_nnNa=-nelV7vwLcFS)PKgddl3 zX~d&$v?924-XP0LIHL8(5B>66!}s6q(RO|_c>+b<-MwqLXJR({^=o-2+Fn~VLCem+ zyT??qfu8RidE5OUXfUs^tI4gnro8_*|K&u z&3Z3~Grg~ILFt|gLw)@i{nXS{lk3;dprB4#=<1$E?)f&J9{%L%0NvRwbC~KIjf0_i@MHiwW_7rv~#XmV#~1h-Lrp9bc0yZ)?ek^ zEx^Z@rRT`I<56?nkGTbpt~{HV(T?EYVAOucwHi3(uV*s)xAaZhRv1#uDXsZ-{ro3R zT$fq1^U>W2-+MOh~HO`o6w6irnh zO9xfZ>vpg0pCH)Aa$SFLQ;cB?s-iKlT-!<1{*t*OGC3ZXJz?kSS_mK}KKJubpv+a_RAhBJF5Qjv(&$o{8#h?1;Js>0(SygHjFS;HsD*s zh8*G^Hnwh{1_the!11#>@L1mzV3uvZ<{lifY}Lk*tVSJwN-H<@5s z3eYxFqC{#9v*x~fZMC2MZ7`t@oE*AI%&t#XD}S)Lx!HHzKL7eCkX7kOMwW#}rQd$R znO}(skpcDnBJ%ryCynYO1xC-55r3m%>AFJ$6g`ulIM ztFIqZml^7~vbW#zOpGSi&|piluw902;=7bl`hd-`|o(*me>olXg;`r#Y!b$Z&7 zfNkCtVwA0GR}YSiwA6bp+I1D(Y+7ryypCGz{r5ZlMKAa;k1woI9dmjF#l%wO*|QG~kL><1H#eumPA^M=z9Q@}*j!TX3cO6QDowQ( zD$>&sVrq3AD^9qPVXUIU%)s!sff@mGJs(;#N!~kq1`r(615{3=1Ebp)`k^Z=4uhA| zrcH5p-sx^S*8leH9oCVJ&7+(ayrG>L&Q}jXh8ZiNrm-@&Pe7+6l@-4n*kTBEjVqY1 z_a&MRV6cDo)R`h6S98kZHy6}0KtMzP{WJNsN*o3Ayl5s7iaCfdxx?AtDcnb=-u6BGnvtNlLE;{-z z$X204=8nviOD4cn?N-*-^3X3(as(~bu3okCPwe|{hxTE0)2MQDM{bW_Ui(AZ!t3G- z4`)y=J>4fZWVSDy&uUR#$B0y%p zf@QX4edWf#Y~S#|F{}UIge0PF&CGdwK*FYGW{&N6Bo(m2aqZ_OO(w#6gu+2#k%5 zKh$!u+?Qu(l{VZx-d7hsM=4#(yXKrFV^LC>Aw_g(Me*J-ovfUA8l)DDg!hSz#3Jb zfRU8xpm}-h*fCU9P?}FzPnRP_P2L)??l=+63+aN1?ot5yM>|;uD8{N}HXfa8tCFRu zS`eycUw=RD%oMeIN&AZE_+7k$dsXKVE&t(p&p+yLCzhFXz!&!!E$D1DWQ({a6LdUN zef`)`H?qahy*=9UqAaSy5htl*Ez`sWW@MZICL631?B>7iyxh~fi%KZtI7LjJ2aK)6 zZ4=E4TVLzzOLxjQ25T9z0_y&R+YQK>C=YcdP=?ubTZ25Or>8l>>yj{yf@=~}Q{|xB zgvwrQF;#}f!RdIYYHb0mgq{+^fc7fQDj-A{iWXBrQp`%Hr>d`i{ZwM;VzyeI<}w3K6 z4p%)ZZbkVM>Daj3yz#5Ln%Y$-Cnv4Xrb>%pHN9bu9b}8*`QJ6PxeLD@NGP%HIAuL+ z1h!{rX!xwoa0+NqW^S^*cAuan0T2vzO1ryx%0AZD@BjI{u{Gzp=uHI(1CKApP%TB6 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μMKUP;j3tZz2lr=fW<}VJLdca4MNKQ^pP%GM| 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 literal 0 HcmV?d00001 diff --git a/api-ref/source/api/index.rst b/api-ref/source/api/index.rst new file mode 100644 index 0000000..008af25 --- /dev/null +++ b/api-ref/source/api/index.rst @@ -0,0 +1,24 @@ +:original_name: gaussdb_04_0000.html + +.. _gaussdb_04_0000: + +API +=== + +- :ref:`Querying Version Information About a DB Engine ` +- :ref:`Querying Database Specifications ` +- :ref:`Managing DB Instances ` +- :ref:`Managing Parameter Templates ` +- :ref:`Managing Quotas ` +- :ref:`Obtaining Task Information ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + querying_version_information_about_a_db_engine + querying_database_specifications + managing_db_instances/index + managing_parameter_templates/index + managing_quotas/index + obtaining_task_information diff --git a/api-ref/source/api/managing_db_instances/creating_a_db_instance.rst b/api-ref/source/api/managing_db_instances/creating_a_db_instance.rst new file mode 100644 index 0000000..6553e62 --- /dev/null +++ b/api-ref/source/api/managing_db_instances/creating_a_db_instance.rst @@ -0,0 +1,332 @@ +:original_name: gaussdb_04_0004.html + +.. _gaussdb_04_0004: + +Creating a DB instance +====================== + +Function +-------- + +This API is used to create a GaussDB(for MySQL) DB instance + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + POST https://{*Endpoint*}/mysql/v3/{project_id}/instances + +- Example + + POST https://{*Endpoint*}/mysql/v3/0483b6b16e954cb88930a360d2c4e663/instances + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + | Name | Mandatory | Description | + +=======================+=======================+============================================================================+ + | project_id | Yes | Project ID of a tenant in a region. | + | | | | + | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + +Request +------- + +.. table:: **Table 2** Parameter description + + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Mandatory | Type | Description | + +==========================+=========================================================================================+=================+===========================================================================================================================================================================================================================================+ + | charge_info | No | Object | Billing mode. | + | | | | | + | | | | For details, see :ref:`Table 3 `. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | name | Yes | String | DB instance name. | + | | | | | + | | | | DB instances of the same type can have same names under the same tenant. | + | | | | | + | | | | The value must be 4 to 64 characters in length and start with a letter. It is case-sensitive and can contain only letters, digits, hyphens (-), and underscores (_). | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | datastore | Yes | Object | Database information. | + | | | | | + | | | | For details, see :ref:`Table 4 `. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | mode | Yes | String | DB instance type. Currently, only the cluster type is supported. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | flavor_ref | Yes | String | Specification code. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | vpc_id | Yes | String | VPC ID. To obtain this value, use either of the following methods: | + | | | | | + | | | | - Method 1: Log in to the VPC console and view the VPC ID on the VPC details page. | + | | | | - Method 2: See "Querying VPCs" in the *Virtual Private Cloud API Reference*. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | subnet_id | Yes | String | Network ID. To obtain this value, use either of the following methods: | + | | | | | + | | | | - Method 1: Log in to the VPC console and click the target subnet on the **Subnets** page. You can view the network ID on the displayed page. | + | | | | - Method 2: See "Querying Subnets" in the *Virtual Private Cloud API Reference*. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | security_group_id | No | String | Security group ID. | + | | | | | + | | | | If the network ACL is enabled for the subnet used by the created DB instance, this parameter is optional. If the network ACL is not enabled, this parameter is mandatory. | + | | | | | + | | | | - Method 1: Log in to VPC console. Choose **Access Control** > **Security Groups** in the navigation pane on the left. On the displayed page, click the target security group. You can view the security group ID on the displayed page. | + | | | | - Method 2: See "Querying Security Groups" in the *Virtual Private Cloud API Reference*. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | configuration_id | No | String | Parameter template ID. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | password | Yes | String | Database password. | + | | | | | + | | | | Valid value: | + | | | | | + | | | | The password is 8 to 32 characters long and must contain at least three types of the following: uppercase letters, lowercase letters, digits, and special characters (``~!@#%^*-_=+?``). | + | | | | | + | | | | You are advised to enter a strong password to improve security and prevent security risks such as brute force cracking. If you enter a weak password, the system automatically determines that the password is invalid. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | backup_strategy | No | Object | Automated backup policy. | + | | | | | + | | | | For details, see :ref:`Table 5 `. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | time_zone | No | String | UTC time zone. | + | | | | | + | | | | - If this parameter is not specified, UTC is used by default. | + | | | | - If this parameter is specified, the value ranges from UTC-12:00 to UTC+12:00 at the full hour. For example, the parameter can be **UTC+08:00** rather than **UTC+08:30**. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | availability_zone_mode | Yes | String | AZ type. The value can be **single** or **multi**. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | master_availability_zone | If **availability_zone_mode** is set to **multi**, this parameter is mandatory. | String | Primary AZ. | + | | | | | + | | If **availability_zone_mode** is set to **single**, this parameter cannot be specified. | | | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | slave_count | Yes | Integer | Number of read-only nodes from 1 to 9. A DB instance can have a maximum of 15 read-only nodes. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | region | Yes | String | Region ID. | + | | | | | + | | | | The value cannot be empty. To obtain this value, see `Regions and Endpoints `__. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | enterprise_project_id | No | String | Enterprise project ID. This parameter is mandatory only when the enterprise project is enabled. | + +--------------------------+-----------------------------------------------------------------------------------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. _gaussdb_04_0004__table1935491614524: + +.. table:: **Table 3** charge_info field data structure description + + +-----------------+-----------------+-----------------+---------------------+ + | Name | Mandatory | Type | Description | + +=================+=================+=================+=====================+ + | charge_mode | Yes | String | Billing mode. | + | | | | | + | | | | Value: **postPaid** | + +-----------------+-----------------+-----------------+---------------------+ + +.. _gaussdb_04_0004__table64243102: + +.. table:: **Table 4** datastore field data structure description + + +-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------+ + | Name | Mandatory | Type | Description | + +=================+=================+=================+===============================================================================================================================+ + | type | Yes | String | DB engine. Currently, only gaussdb-mysql is supported. | + +-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------+ + | version | Yes | String | DB version. | + | | | | | + | | | | For details about supported DB versions, see section :ref:`Querying Version Information About a DB Engine `. | + +-----------------+-----------------+-----------------+-------------------------------------------------------------------------------------------------------------------------------+ + +.. _gaussdb_04_0004__table0863181193416: + +.. table:: **Table 5** backup_strategy field data structure description + + +------------+-----------+--------+---------------------------------------------------------------------------------------------------------------------------------+ + | Name | Mandatory | Type | Description | + +============+===========+========+=================================================================================================================================+ + | start_time | Yes | String | Automated backup start time. The automatic backup will be triggered within one hour after the time specified by this parameter. | + +------------+-----------+--------+---------------------------------------------------------------------------------------------------------------------------------+ + +.. note:: + + The value of **region** in the following is used as an example. + +- Request example + + .. code-block:: text + + { + "charge_info":{ + "charge_mode":"postPaid" + }, + "region":"cn-north-4b", + "name":"gaussdb-2d34", + "datastore":{ + "type":"gaussdb-mysql", + "version":"8.0" + }, + "mode":"Cluster", + "flavor_ref":"gaussdb.mysql.large.4", + "vpc_id":"f7ee62e2-9705-4523-ba49-a85ea1a1fa87", + "subnet_id":"140af7bf-a9da-4dcf-8837-34199fd6d186", + "security_group_id":"c7f69884-fe2b-4630-8114-70a11499d902", + "configuration_id":"43570e0de32e40c5a15f831aa5ce4176pr07", + "password":"Gauss_234", + "backup_strategy":{ + "start_time":"17:00-18:00" + }, + "time_zone":"UTC+08:00", + "availability_zone_mode":"single", + "master_availability_zone":"az1pod1", + "slave_count":1, + "enterprise_project_id":"0" + } + +Response +-------- + +- Normal response + + .. table:: **Table 6** Parameter description + + +-----------------------+-----------------------+-----------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+=======================================================================+ + | instance | Object | DB instance information. | + | | | | + | | | For details, see :ref:`Table 7 `. | + +-----------------------+-----------------------+-----------------------------------------------------------------------+ + | job_id | String | DB instance creation task ID. | + +-----------------------+-----------------------+-----------------------------------------------------------------------+ + + .. _gaussdb_04_0004__table175305610274: + + .. table:: **Table 7** instance field data structure description + + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +============================+=======================+========================================================================================================================================================================+ + | id | String | DB instance ID. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | name | String | DB instance name. DB instances of the same type can have same names under the same tenant. | + | | | | + | | | The value must be 4 to 64 characters in length and start with a letter. It is case-insensitive and can contain only letters, digits, hyphens (-), and underscores (_). | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | status | String | DB instance status. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | datastore | Object | Database information. | + | | | | + | | | For details, see :ref:`Table 8 `. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | mode | String | DB instance type. Currently, only the cluster type is supported. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | configuration_id | String | Parameter template ID. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | port | String | Database port, which is the same as the request parameter. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | backup_strategy | Object | Automated backup policy. | + | | | | + | | | For details, see :ref:`Table 9 `. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | region | String | Region ID. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | availability_zone_mode | String | AZ ID. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | master\_ availability_zone | String | Primary AZ ID. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | vpc_id | String | VPC ID. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | security_group_id | String | Security group ID. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | subnet_id | String | Subnet ID. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | slave_count | Integer | Number of read-only nodes. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | charge_info | Object | Billing mode. | + | | | | + | | | For details, see :ref:`Table 10 `. | + +----------------------------+-----------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + + .. _gaussdb_04_0004__table766045720277: + + .. table:: **Table 8** datastore field data structure description + + ======= ====== ============= + Name Type Description + ======= ====== ============= + type String **DB Engine** + version String DB version. + ======= ====== ============= + + .. _gaussdb_04_0004__table81249589270: + + .. table:: **Table 9** backup_strategy field data structure description + + +------------+---------+----------------------------------------------------------------------------------------+ + | Name | Type | Description | + +============+=========+========================================================================================+ + | start_time | String | Backup time window. Automated backups will be triggered during the backup time window. | + +------------+---------+----------------------------------------------------------------------------------------+ + | keep_days | Integer | Backup retention days. | + +------------+---------+----------------------------------------------------------------------------------------+ + + .. _gaussdb_04_0004__table207147873611: + + .. table:: **Table 10** charge_info field data structure description + + =========== ====== ============= + Name Type Description + =========== ====== ============= + charge_mode String Billing mode. + =========== ====== ============= + +.. note:: + + The values of **region** and **master_availability_zone** are used as examples. + +- Example normal response + + .. code-block:: text + + { + "instance":{ + "id":"5eebbb4c0f9f4a99b42ed1b6334569aain07", + "name":"gaussdb-2d34", + "status":"BUILD", + "datastore":{ + "type":"gaussdb-mysql", + "version":"8.0" + }, + "mode":"Cluster", + "configuration_id": "", + "port":null, + "backup_strategy":{ + "start_time":null, + "keep_days":"7" + }, + "enterprise_project_id": "0", + "region":"aaa", + "availability_zone_mode":"single", + "master_availability_zone":"aaa", + "vpc_id":"f7ee62e2-9705-4523-ba49-a85ea1a1fa87", + "security_group_id":"c7f69884-fe2b-4630-8114-70a11499d902", + "subnet_id":"140af7bf-a9da-4dcf-8837-34199fd6d186", + "slave_count":1, + "charge_info":{ + "charge_mode":"postPaid" + } + }, + "job_id":"43672fe5-56bd-47f1-8fd1-595cded08a7c" + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/managing_db_instances/deleting_a_db_instance.rst b/api-ref/source/api/managing_db_instances/deleting_a_db_instance.rst new file mode 100644 index 0000000..caa7f8f --- /dev/null +++ b/api-ref/source/api/managing_db_instances/deleting_a_db_instance.rst @@ -0,0 +1,75 @@ +:original_name: gaussdb_04_0007.html + +.. _gaussdb_04_0007: + +Deleting a DB Instance +====================== + +Function +-------- + +This API is used to delete a DB instance. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + DELETE https://{*Endpoint*}/mysql/v3/{project_id}/instances/{instance_id} + +- Example + + DELETE https://{*Endpoint*}/mysql/v3/0483b6b16e954cb88930a360d2c4e663/instances/dsfae23fsfdsae3435in01 + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + | Name | Mandatory | Description | + +=======================+=======================+============================================================================+ + | project_id | Yes | Project ID of a tenant in a region. | + | | | | + | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + | instance_id | Yes | DB instance ID, which is compliant with the UUID format. | + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + +Request +------- + +None. + +Response +-------- + +- Normal response + + .. table:: **Table 2** Parameter description + + ====== ====== ==================================== + Name Type Description + ====== ====== ==================================== + job_id String ID of the DB instance deletion task. + ====== ====== ==================================== + +- Example normal response + + .. code-block:: text + + { + "job_id": "dff1d289-4d03-4942-8b9f-463ea07c000d" + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/managing_db_instances/index.rst b/api-ref/source/api/managing_db_instances/index.rst new file mode 100644 index 0000000..9e1ac64 --- /dev/null +++ b/api-ref/source/api/managing_db_instances/index.rst @@ -0,0 +1,20 @@ +:original_name: gaussdb_04_0003.html + +.. _gaussdb_04_0003: + +Managing DB Instances +===================== + +- :ref:`Creating a DB instance ` +- :ref:`Querying a DB Instance List ` +- :ref:`Querying Details of a DB Instance ` +- :ref:`Deleting a DB Instance ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + creating_a_db_instance + querying_a_db_instance_list + querying_details_of_a_db_instance + deleting_a_db_instance diff --git a/api-ref/source/api/managing_db_instances/querying_a_db_instance_list.rst b/api-ref/source/api/managing_db_instances/querying_a_db_instance_list.rst new file mode 100644 index 0000000..464bdef --- /dev/null +++ b/api-ref/source/api/managing_db_instances/querying_a_db_instance_list.rst @@ -0,0 +1,240 @@ +:original_name: gaussdb_04_0005.html + +.. _gaussdb_04_0005: + +Querying a DB Instance List +=========================== + +Function +-------- + +This API is used to query a DB instance list according to search criteria. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + GET https://{*Endpoint*}/mysql/v3/{project_id}/instances?id={id}&name={name}&type={type}&datastore_type={datastore_type}&vpc_id={vpc_id}&subnet_id={subnet_id}&offset={offset}&limit={limit} + +- Example + + GET https://{*Endpoint*}/mysql/v3/97b026aa9cc4417888c14c84a1ad9860/instances?id=ed7cc6166ec24360a5ed5c5c9c2ed726in01&name=hy&type=Cluster&datastore_type=gaussdb-mysql&vpc_id=19e5d45d-70fd-4a91-87e9-b27e71c9891f&subnet_id=bd51fb45-2dcb-4296-8783-8623bfe89bb7&offset=0&limit=10 + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Mandatory | Description | + +=================+=================+=================+=========================================================================================================================================================================================================================================+ + | project_id | String | Yes | Project ID of a tenant in a region. | + | | | | | + | | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | id | String | No | DB instance ID. | + | | | | | + | | | | The asterisk (``*``) is reserved for the system. If the instance ID starts with an asterisk (*), the value following asterisk (*) is used for fuzzy matching. Otherwise, the instance ID is used for exact matching. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | name | String | No | DB instance name. | + | | | | | + | | | | The asterisk (``*``) is reserved for the system. If the instance name starts with an asterisk (*), the value following asterisk (*) is used for fuzzy matching. Otherwise, the instance name is used for exact matching. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | type | String | No | DB instance type to be queried. Currently, only the cluster type is supported. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | datastore_type | String | No | Database type. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | vpc_id | String | No | VPC ID. | + | | | | | + | | | | - Method 1: Log in to VPC console and view the VPC ID in the VPC details. | + | | | | - Method 2: See the "Querying VPCs" section in the *Virtual Private Cloud API Reference*. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | subnet_id | String | No | Network ID of the subnet. | + | | | | | + | | | | - Method 1: Log in to VPC console and click the target subnet on the **Subnets** page. You can view the network ID on the displayed page. | + | | | | - Method 2: See the "Querying Subnets" section under "APIs" or the "Querying Networks" section under "OpenStack Neutron APIs" in the *Virtual Private Cloud API Reference*. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | offset | Integer | No | Index position. If **offset** is set to *N*, the resource query starts from the N+1 piece of data. The value is **0** by default, indicating that the query starts from the first piece of data. The value cannot be a negative number. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | limit | Integer | No | Number of records to be queried. The default value is **100**. The value cannot be a negative number. The minimum value is **1** and the maximum value is **100**. | + +-----------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Request +------- + +None. + +Response +-------- + +- Normal response + + .. table:: **Table 2** Parameter description + + +-----------------------+-----------------------+------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+========================================================================+ + | instances | Array of objects | DB instance information. | + | | | | + | | | For details, see :ref:`Table 3 `. | + +-----------------------+-----------------------+------------------------------------------------------------------------+ + | total_count | Integer | Total number of records. | + +-----------------------+-----------------------+------------------------------------------------------------------------+ + + .. _gaussdb_04_0005__table2058713718267: + + .. table:: **Table 3** instances field data structure description + + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+====================================================================================================================+ + | id | String | DB instance ID. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | name | String | DB instance name. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | status | String | DB instance status. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | private_ips | List | Private IP address for write. It is a blank string until an ECS is created. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | public_ips | List | Public IP address list. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | port | Integer | Database port number. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | type | String | DB instance type. The value is **Cluster**. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | region | String | Region where the DB instance is deployed. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | datastore | Object | Database information. | + | | | | + | | | For details, see :ref:`Table 4 `. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | created | String | Creation time in the "yyyy-mm-ddThh:mm:ssZ" format. | + | | | | + | | | **T** is the separator between the calendar and the hourly notation of time. **Z** indicates the time zone offset. | + | | | | + | | | The value is empty unless the DB instance creation is complete. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | updated | String | Update time. The format is the same as that of the **created** field. | + | | | | + | | | The value is empty unless the DB instance creation is complete. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | db_user_name | String | Default username. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | vpc_id | String | VPC ID. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | subnet_id | String | Network ID of the subnet. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | security_group_id | String | Security group ID. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | flavor_ref | String | Specification code. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | flavor_info | Object | Specification description. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | volume | Object | Volume information. | + | | | | + | | | For details, see :ref:`Table 5 `. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | backup_strategy | Object | Backup policy. | + | | | | + | | | For details, see :ref:`Table 7 `. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | time_zone | String | Time zone. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + + .. _gaussdb_04_0005__table187591675262: + + .. table:: **Table 4** datastore field data structure description + + ======= ====== =========== + Name Type Description + ======= ====== =========== + type String DB engine. + version String DB version. + ======= ====== =========== + + .. _gaussdb_04_0005__table14771167122611: + + .. table:: **Table 5** volume field data structure description + + ==== ====== =============== + Name Type Description + ==== ====== =============== + type String Disk type. + size String Used disk size. + ==== ====== =============== + + .. table:: **Table 6** flavor_ref field data structure description + + ===== ====== ================== + Name Type Description + ===== ====== ================== + vcpus String Number of vCPUs. + ram String Memory size in GB. + ===== ====== ================== + + .. _gaussdb_04_0005__table578797132615: + + .. table:: **Table 7** backup_strategy field data structure description + + +------------+--------+----------------------------------------------------------------------------------------+ + | Name | Type | Description | + +============+========+========================================================================================+ + | start_time | String | Backup time window. Automated backups will be triggered during the backup time window. | + +------------+--------+----------------------------------------------------------------------------------------+ + | keep_days | String | Backup retention days. | + +------------+--------+----------------------------------------------------------------------------------------+ + + .. note:: + + The value of **region** is used as an example in the following response. + +- Example normal response + + .. code-block:: text + + { + "total_count":6, + "instances":[ + { + "id":"d738399de028480fabb2b8120d4e01a4in07", + "status":"ACTIVE", + "name":"oMoS_001", + "port":3306, + "type":"Cluster", + "private_ips": ["192.168.0.142"], + "public_ips": ["10.154.219.187"], + "db_user_name": "root", + "region": "aaa", + "datastore": {"type": "gaussdb-mysql", "version":"8.0"}, + "created": "2018-08-20T02:33:49+0800", + "updated": "2018-08-20T02:33:50+0800", + "volume": { + "type": "POOL", + "used_size": 100 + }, + "vpc_id": "f7ee62e2-9705-4523-ba49-a85ea1a1fa87", + "subnet_id": "140af7bf-a9da-4dcf-8837-34199fd6d186", + "security_group_id":"c7f69884-fe2b-4630-8114-70a11499d902", + "flavor_ref":"gaussdb.mysql.c3.small.4", + "backup_strategy": {"start_time": "19:00-20:00", "keep_days": 7} + "charge_info": { + "charge_mode": "postPaid" + }, + "enterprise_project_id": "0", + "time_zone": "", + } + ] + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/managing_db_instances/querying_details_of_a_db_instance.rst b/api-ref/source/api/managing_db_instances/querying_details_of_a_db_instance.rst new file mode 100644 index 0000000..2cdaa9c --- /dev/null +++ b/api-ref/source/api/managing_db_instances/querying_details_of_a_db_instance.rst @@ -0,0 +1,305 @@ +:original_name: gaussdb_04_0006.html + +.. _gaussdb_04_0006: + +Querying Details of a DB Instance +================================= + +Function +-------- + +This API is used to query the details of a specified DB instance. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + GET https://{*Endpoint*}/mysql/v3/{project_id}/instances/{instance_id} + +- Example + + GET https://{*Endpoint*}/mysql/v3/97b026aa9cc4417888c14c84a1ad9860/instances/436aaafb689c4250a9a5bb33cb271e8cin07 + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ + | Name | Type | Mandatory | Description | + +=================+=================+=================+============================================================================+ + | project_id | String | Yes | Project ID of a tenant in a region. | + | | | | | + | | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ + | instance_id | String | Yes | DB instance ID. | + +-----------------+-----------------+-----------------+----------------------------------------------------------------------------+ + +Request +------- + +None. + +Response +-------- + +- Normal response + + .. table:: **Table 2** Parameter description + + +-----------------------+-----------------------+------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+========================================================================+ + | instance | Object | DB instance information. | + | | | | + | | | For details, see :ref:`Table 3 `. | + +-----------------------+-----------------------+------------------------------------------------------------------------+ + + .. _gaussdb_04_0006__table2058713718267: + + .. table:: **Table 3** instance field data structure description + + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+==================+=============================================================================================+ + | id | String | DB instance ID. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | name | String | DB instance name. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | project_id | String | Project ID of a tenant in a region. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | status | String | DB instance status. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | enterprise_project_id | String | Enterprise project ID. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | type | String | DB instance type. Currently, only the cluster type is supported. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | node_count | Integer | Number of nodes. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | datastore | Object | Database information. For details, see :ref:`Table 4 `. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | backup_used_space | Integer | Used backup space, in GB. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | created | String | DB instance creation time. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | updated | String | DB instance update time. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | public_ips | String | Public IP address of the DB instance. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | private_write_ips | Array of List | Private IP address for write. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | db_user_name | String | Default username. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | port | String | Database port number. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | vpc_id | String | VPC ID. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | subnet_id | String | Subnet ID. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | security_group_id | String | Security group ID. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | volume | Object | Disk information. For details, see :ref:`Table 8 `. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | backup_strategy | Object | Backup policy. For details, see :ref:`Table 6 `. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | nodes | Arrays of object | Node information. For details, see :ref:`Table 7 `. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | time_zone | String | Time zone. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | az_mode | String | AZ. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + | master_az_code | String | Primary AZ. | + +-----------------------+------------------+---------------------------------------------------------------------------------------------+ + + .. _gaussdb_04_0006__table187591675262: + + .. table:: **Table 4** datastore field data structure description + + ======= ====== =========== + Name Type Description + ======= ====== =========== + type String DB engine. + version String DB version. + ======= ====== =========== + + .. table:: **Table 5** configurations field data structure description + + ==== ====== ======================== + Name Type Description + ==== ====== ======================== + id String Parameter template ID. + name String Parameter template name. + ==== ====== ======================== + + .. _gaussdb_04_0006__table37991653839: + + .. table:: **Table 6** backup_strategy field data structure description + + +------------+---------+----------------------------------------------------------------------------------------+ + | Name | Type | Description | + +============+=========+========================================================================================+ + | start_time | String | Backup time window. Automated backups will be triggered during the backup time window. | + +------------+---------+----------------------------------------------------------------------------------------+ + | keep_days | Integer | Backup retention days. | + +------------+---------+----------------------------------------------------------------------------------------+ + + .. _gaussdb_04_0006__table5182635134511: + + .. table:: **Table 7** nodes field data structure description + + +------------------+-----------------+-------------------------------------------------------------------------+ + | Name | Type | Description | + +==================+=================+=========================================================================+ + | id | String | Node ID. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | name | Array of object | Node name. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | type | String | Node type, which can be **master** or **slave**. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | status | String | Node status. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | port | Integer | Database port number. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | private_read_ips | Array of String | Private IP address for read. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | volume | Object | Disk information. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | az_code | String | AZ. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | region_code | String | Region where the DB instance is deployed. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | created | String | DB instance creation time. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | updated | String | Update time. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | flavor_ref | String | Specification code. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | max_connections | String | Maximum number of connections. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | vcpus | String | Number of vCPUs. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | ram | String | Memory size in GB. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | need_restart | Boolean | Whether to reboot the DB instance for the modifications to take effect. | + +------------------+-----------------+-------------------------------------------------------------------------+ + | priority | String | Failover priority. | + +------------------+-----------------+-------------------------------------------------------------------------+ + + .. _gaussdb_04_0006__table14771167122611: + + .. table:: **Table 8** volume field data structure description + + ==== ====== ================================================ + Name Type Description + ==== ====== ================================================ + type String Storage type. Currently, only POOL is supported. + used String Used storage size, in GB. + ==== ====== ================================================ + + .. note:: + + The values of **region_code** and **az_code** are used as examples. + +- Example normal response + + .. code-block:: text + + { + "instance": { + "id": "d2cda7b97a39488e8b30e3cea4066204in07", + "name": "gauss-d616-lb07", + "status": "FAILED", + "project_id": "053f533ead80d5102f0cc012e8d468a4", + "enterprise_project_id": "0", + "type": "Cluster", + "charge_info": { + "charge_mode": "postPaid", + "order_id": "" + }, + "node_count": 2, + "datastore": { + "type": "GaussDB(for MySQL)", + "version": "8.0" + }, + "created": "2020-07-21T09:13:56+0800", + "updated": "2020-07-21T09:27:54+0800", + "public_ips": "", + "private_write_ips": [ + "192.168.0.235" + ], + "db_user_name": "root", + "port": "3306", + "vpc_id": "f7ee62e2-9705-4523-ba49-a85ea1a1fa87", + "subnet_id": "140af7bf-a9da-4dcf-8837-34199fd6d186", + "security_group_id": "c7f69884-fe2b-4630-8114-70a11499d902", + "backup_strategy": { + "start_time": "00:00-00:00", + "keep_days": "0" + }, + "nodes": [ + { + "id": "799a0f2fa49a4151bf9f7063c1fbba36no07", + "name": "gauss-d616-lb07_node01", + "type": "master", + "status": "FAILED", + "port": 3306, + "private_read_ips": [ + "192.168.0.163" + ], + "volume": { + "type": "POOL", + "used": "0.0" + }, + "az_code": "az1xahz", + "region_code": "cn-xianhz-1", + "flavor_id": "3169caaf-6c2f-41d5-aadd-c8fc3d83597e", + "flavor_ref": "taurus.large.4", + "max_connections": null, + "vcpus": "1", + "ram": "4", + "need_restart": false, + "priority": 1 + }, + { + "id": "816459d771c444db9fa4c1d5c173cb1cno07", + "name": "gauss-d616-lb07_node02", + "type": "slave", + "status": "FAILED", + "port": 3306, + "private_read_ips": [ + "192.168.0.160" + ], + "volume": { + "type": "POOL", + "used": "0.0" + }, + "az_code": "az1xahz", + "region_code": "cn-xianhz-1", + "flavor_id": "3169caaf-6c2f-41d5-aadd-c8fc3d83597e", + "flavor_ref": "taurus.large.4", + "max_connections": null, + "vcpus": "1", + "ram": "4", + "need_restart": false, + "priority": 1 + } + ], + "time_zone": "UTC+08:00", + "backup_used_space": 0, + "az_mode": "single", + "master_az_code": "az1xahz" + } + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/managing_parameter_templates/index.rst b/api-ref/source/api/managing_parameter_templates/index.rst new file mode 100644 index 0000000..9288fcd --- /dev/null +++ b/api-ref/source/api/managing_parameter_templates/index.rst @@ -0,0 +1,14 @@ +:original_name: gaussdb_04_0008.html + +.. _gaussdb_04_0008: + +Managing Parameter Templates +============================ + +- :ref:`Querying a Parameter Template ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + querying_a_parameter_template diff --git a/api-ref/source/api/managing_parameter_templates/querying_a_parameter_template.rst b/api-ref/source/api/managing_parameter_templates/querying_a_parameter_template.rst new file mode 100644 index 0000000..fc25af0 --- /dev/null +++ b/api-ref/source/api/managing_parameter_templates/querying_a_parameter_template.rst @@ -0,0 +1,119 @@ +:original_name: gaussdb_04_0009.html + +.. _gaussdb_04_0009: + +Querying a Parameter Template +============================= + +Function +-------- + +This API is used to obtain a parameter template list, including all databases' default and custom parameter templates. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + GET https://{*Endpoint*}/mysql/v3/{*project_id*}/configurations + +- Example + + GET https://{*Endpoint*}/mysql/v3/0483b6b16e954cb88930a360d2c4e663/configurations + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + | Name | Mandatory | Description | + +=======================+=======================+============================================================================+ + | project_id | Yes | Project ID of a tenant in a region. | + | | | | + | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + +Request +------- + +None. + +Response +-------- + +- Normal response + + .. table:: **Table 2** Parameter description + + +-----------------------+-----------------------+------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+========================================================================+ + | configurations | Array of objects | Parameter template list. | + | | | | + | | | For details, see :ref:`Table 3 `. | + +-----------------------+-----------------------+------------------------------------------------------------------------+ + | total_count | Integer | Total number of parameter templates. | + +-----------------------+-----------------------+------------------------------------------------------------------------+ + + .. _gaussdb_04_0009__table1324110018258: + + .. table:: **Table 3** configurations field data structure description + + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +========================+=======================+====================================================================================================================+ + | id | String | Parameter template ID. | + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | name | String | Parameter template name. | + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | description | String | Parameter template description. | + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | datastore_version_name | String | DB version name. | + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | datastore_name | String | DB name. | + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | created | String | Creation time in the "yyyy-MM-ddTHH:mm:ssZ" format. | + | | | | + | | | **T** is the separator between the calendar and the hourly notation of time. **Z** indicates the time zone offset. | + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | updated | String | Update time in the "yyyy-MM-ddTHH:mm:ssZ" format. | + | | | | + | | | **T** is the separator between the calendar and the hourly notation of time. **Z** indicates the time zone offset. | + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | user_defined | Boolean | Whether the parameter template is a custom template. | + | | | | + | | | - **false**: The parameter template is a default template. | + | | | - **true**: The parameter template is a custom template. | + +------------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + +- Example normal response + + .. code-block:: text + + { + "configurations":[ + { + "id":"1ad028f5f6b8482483948860feb33339pr07", + "name":"DBS_GaussDB_ParameterTemple_Apply_001", + "description":"GaussDB-Test", + "datastore_version_name":"8.0", + "datastore_name":"gaussdb-mysql", + "created":"2020-04-08 07:12:17", + "updated":"2020-04-08 07:12:17", + "user_defined":true, + } + ] + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/managing_quotas/configuring_resource_quotas.rst b/api-ref/source/api/managing_quotas/configuring_resource_quotas.rst new file mode 100644 index 0000000..6ad80e9 --- /dev/null +++ b/api-ref/source/api/managing_quotas/configuring_resource_quotas.rst @@ -0,0 +1,130 @@ +:original_name: gaussdb_04_0012.html + +.. _gaussdb_04_0012: + +Configuring Resource Quotas +=========================== + +Function +-------- + +This API is used to set resource quotas for a specified enterprise project. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + POST https://{*Endpoint*}/mysql/v3/{project_id}/quotas + +- Example + + POST https://{*Endpoint*}/mysql/v3/0483b6b16e954cb88930a360d2c4e663/quotas + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + | Name | Mandatory | Description | + +=======================+=======================+============================================================================+ + | project_id | Yes | Project ID of a tenant in a region. | + | | | | + | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + | quota_list | Yes | Quota details. A maximum of 10 quota records can be configured at a time. | + | | | | + | | | For details, see :ref:`Table 2 `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + +Request +------- + +- Parameter description + + .. _gaussdb_04_0012__table1453814912427: + + .. table:: **Table 2** quota_list field data structure description + + +-----------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=========+==================================================================================================================================================================================================+ + | enterprise_project_id | String | Enterprise project ID. | + +-----------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | instance_quota | Integer | DB instance quantity quota. The value ranges from **0** to **1000**. (If there are already DB instances created, this parameter value must be greater than the number of existing DB instances.) | + +-----------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | vcpus_quota | Integer | vCPUs quota. The value ranges from **0** to **3600000**. (If there are already DB instances created, this parameter value must be greater than the number of used vCPUs.) | + +-----------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ram_quota | Integer | Memory quota in GB. The value ranges from **0** to **19200000**. (If there are already DB instances created, this parameter value must be greater than the used memory size.) | + +-----------------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +- Request example + + .. code-block:: text + + { + "quota_list": [ + { + "enterprise_project_id": "0", + "instance_quota": 1, + "vcpus_quota": 4, + "ram_quota": 8 + } + ] + } + +Response +-------- + +- Parameter description + + .. table:: **Table 3** Parameter description + + +-----------------------+-----------------------+-------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+===================================================================+ + | quota_list | Array of objects | Configured quota information. | + | | | | + | | | For details, see :ref:`Table 4 `. | + +-----------------------+-----------------------+-------------------------------------------------------------------+ + + .. _gaussdb_04_0012__table66531170: + + .. table:: **Table 4** quota_list data structure description + + ===================== ======= ================================== + Name Type Description + ===================== ======= ================================== + enterprise_project_id String Enterprise project ID. + instance_quota Integer Quota of the DB instance quantity. + vcpus_quota Integer Quota of vCPUs. + ram_quota Integer Memory quota in GB. + ===================== ======= ================================== + +- Example response + + .. code-block:: text + + { + "quota_list": [ + { + "enterprise_project_id": "0", + "instance_quota": 1, + "vcpus_quota": 4, + "ram_quota": 8 + } + ] + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/managing_quotas/index.rst b/api-ref/source/api/managing_quotas/index.rst new file mode 100644 index 0000000..1981941 --- /dev/null +++ b/api-ref/source/api/managing_quotas/index.rst @@ -0,0 +1,18 @@ +:original_name: gaussdb_04_0010.html + +.. _gaussdb_04_0010: + +Managing Quotas +=============== + +- :ref:`Querying Resource Quotas ` +- :ref:`Configuring Resource Quotas ` +- :ref:`Modifying Resource Quotas ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + querying_resource_quotas + configuring_resource_quotas + modifying_resource_quotas diff --git a/api-ref/source/api/managing_quotas/modifying_resource_quotas.rst b/api-ref/source/api/managing_quotas/modifying_resource_quotas.rst new file mode 100644 index 0000000..ea0afa0 --- /dev/null +++ b/api-ref/source/api/managing_quotas/modifying_resource_quotas.rst @@ -0,0 +1,132 @@ +:original_name: gaussdb_04_0013.html + +.. _gaussdb_04_0013: + +Modifying Resource Quotas +========================= + +Function +-------- + +This API is used to modify the resource quota of a specified enterprise project. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + PUT https://{*Endpoint*}/mysql/v3/{project_id}/quotas + +- Example + + PUT https://{*Endpoint*}/mysql/v3/0483b6b16e954cb88930a360d2c4e663/quotas + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+----------------------------------------------------------------------------------------------------+ + | Name | Mandatory | Description | + +=======================+=======================+====================================================================================================+ + | project_id | Yes | Project ID of a tenant in a region. | + | | | | + | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------------------------------+ + | quota_list | Yes | Enterprise project resource quotas to be updated. A maximum of 10 quotas can be updated at a time. | + | | | | + | | | For details, see :ref:`Table 2 `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------------------------------+ + +Request +------- + +- Parameter description + + .. _gaussdb_04_0013__table1252104315240: + + .. table:: **Table 2** quota_list field data structure description + + +-----------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+=====================================================================================================================================================================================================================+ + | enterprise_project_id | String | Enterprise project ID. | + +-----------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | instance_quota | Integer | Quota of the DB instance quantity. The value ranges from **0** to **1000**. (If there are already DB instances created, this parameter value must be greater than or equal to the number of existing DB instances.) | + +-----------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | vcpus_quota | Integer | Quota of vCPUs. The value ranges from **0** to **3600000**. (If there are already DB instances created, this parameter value must be greater than or equal to the number of used vCPUs.) | + +-----------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | ram_quota | Integer | Memory quota in GB. | + | | | | + | | | Memory quota in GB. The value ranges from **0** to **19200000**. (If there are already DB instances created, this parameter value must be greater than or equal to the used memory size.) | + +-----------------------+-----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +- Request example + + .. code-block:: text + + { + "quota_list": [ + { + "enterprise_project_id": "0", + "instance_quota": 1, + "vcpus_quota": 4, + "ram_quota": 8 + } + ] + } + +Response +-------- + +- Parameter description + + .. table:: **Table 3** Parameter description + + +-----------------------+-----------------------+-------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+===================================================================+ + | quota_list | Array of objects | Configured quota information. | + | | | | + | | | For details, see :ref:`Table 4 `. | + +-----------------------+-----------------------+-------------------------------------------------------------------+ + + .. _gaussdb_04_0013__table66531170: + + .. table:: **Table 4** quota_list field data structure description + + ===================== ======= ================================== + Name Type Description + ===================== ======= ================================== + enterprise_project_id String Enterprise project ID. + instance_quota Integer Quota of the DB instance quantity. + vcpus_quota Integer Quota of vCPUs. + ram_quota Integer Memory quota in GB. + ===================== ======= ================================== + +- Example response + + .. code-block:: text + + { + "quota_list": [ + { + "enterprise_project_id": "0", + "instance_quota": 1, + "vcpus_quota": 4, + "ram_quota": 8 + } + ] + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/managing_quotas/querying_resource_quotas.rst b/api-ref/source/api/managing_quotas/querying_resource_quotas.rst new file mode 100644 index 0000000..633fdbd --- /dev/null +++ b/api-ref/source/api/managing_quotas/querying_resource_quotas.rst @@ -0,0 +1,116 @@ +:original_name: gaussdb_04_0011.html + +.. _gaussdb_04_0011: + +Querying Resource Quotas +======================== + +Function +-------- + +This API is used to obtain the resource quota of a specified enterprise project. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + GET https://{*Endpoint*}/mysql/v3/{project_id}/quotas + +- Example + + GET https://{*Endpoint*}/mysql/v3/619d3e78f61b4be68bc5aa0b59edcf7b/quotas + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Name | Mandatory | Description | + +=======================+=======================+=========================================================================================================================================================================================================================================+ + | project_id | Yes | Project ID of a tenant in a region. | + | | | | + | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | offset | No | Index position. If **offset** is set to *N*, the resource query starts from the N+1 piece of data. The value is **0** by default, indicating that the query starts from the first piece of data. The value cannot be a negative number. | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | limit | No | Number of records to be queried. The default value is **10**. The value cannot be a negative number. The minimum value is **1** and the maximum value is **100**. | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +Request +------- + +None + +Response +-------- + +- Parameter description + + .. table:: **Table 2** Parameter description + + +-----------------------+-----------------------+-------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+===================================================================+ + | quota_list | Array of objects | Quota information list. | + | | | | + | | | For details, see :ref:`Table 3 `. | + +-----------------------+-----------------------+-------------------------------------------------------------------+ + | total_count | Integer | Number of quota records. | + +-----------------------+-----------------------+-------------------------------------------------------------------+ + + .. _gaussdb_04_0011__table66531170: + + .. table:: **Table 3** quota_list field data structure description + + =========================== ======= ================================== + Name Type Description + =========================== ======= ================================== + enterprise_project_id String Enterprise project ID. + instance_quota Integer Quota of the DB instance quantity. + vcpus_quota Integer Quota of vCPUs. + ram_quota Integer Memory quota in GB. + availability_instance_quota Integer Remaining quota of DB instances. + availability_vcpus_quota Integer Remaining quota of vCPU. + availability_ram_quota Integer Remaining memory quota. + =========================== ======= ================================== + +- Example response + + .. code-block:: text + + "quota_list": [ + { + "enterprise_project_id": "0", + "instance_quota": 20, + "vcpus_quota": 20, + "ram_quota": 40, + "availability_instance_quota": 1, + "availability_vcpus_quota ": 4, + "availability_ram_quota": 8 + }, + { + "enterprise_project_id": "d72ebb42-9110-464c-a8e2-f9b9f349f80f", + "instance_quota": 0, + "vcpus_quota": 0, + "ram_quota": 0, + "availability_instance_quota ": 1, + "availability_vcpus_quota ": 4, + "availability_ram_quota ": 8 + } + ], + "total_count": 2 + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/obtaining_task_information.rst b/api-ref/source/api/obtaining_task_information.rst new file mode 100644 index 0000000..0e4154e --- /dev/null +++ b/api-ref/source/api/obtaining_task_information.rst @@ -0,0 +1,186 @@ +:original_name: gaussdb_04_0014.html + +.. _gaussdb_04_0014: + +Obtaining Task Information +========================== + +Function +-------- + +This API is used to obtain task information from the task center. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + GET https://{*Endpoint*}/mysql/v3/{project_id}/jobs?id={id} + +- Example + + GET https://{*Endpoint*}/mysql/v3/0483b6b16e954cb88930a360d2c4e663/jobs?id=a9767ede-fe0f-4888-9003-e843a4c90514 + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + | Name | Mandatory | Description | + +=======================+=======================+============================================================================+ + | project_id | Yes | Project ID of a tenant in a region. | + | | | | + | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + | id | Yes | Task ID. | + +-----------------------+-----------------------+----------------------------------------------------------------------------+ + +Request +------- + +None. + +Response +-------- + +- Normal response + + .. table:: **Table 2** Parameter description + + +------+--------+-------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +======+========+===========================================================================================+ + | job | Object | Task information. For details, see :ref:`Table 3 `. | + +------+--------+-------------------------------------------------------------------------------------------+ + + .. _gaussdb_04_0014__table54571314103317: + + .. table:: **Table 3** job field data structure description + + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+====================================================================================================================+ + | id | String | Task ID. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | name | String | Task name. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | status | String | Task execution status. | + | | | | + | | | Valid value: | + | | | | + | | | - **Running**: The task is being executed. | + | | | - **Completed**: The task is successfully executed. | + | | | - **Failed**: The task fails to be executed. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | created | String | Creation time in the "yyyy-mm-ddThh:mm:ssZ" format. | + | | | | + | | | **T** is the separator between the calendar and the hourly notation of time. **Z** indicates the time zone offset. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | process | String | Task execution progress. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | instance | Object | DB instance on which the task is executed. | + | | | | + | | | For details, see :ref:`Table 4 `. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | entities | Object | Displayed information varies depending on tasks. | + | | | | + | | | For details, see :ref:`Table 5 `. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + | fail_reason | String | Task failure information. | + +-----------------------+-----------------------+--------------------------------------------------------------------------------------------------------------------+ + + .. _gaussdb_04_0014__table4062895917262: + + .. table:: **Table 4** instances field data structure description + + ==== ====== ================= + Name Type Description + ==== ====== ================= + id String DB instance ID. + name String DB instance name. + ==== ====== ================= + + .. _gaussdb_04_0014__table1014617554138: + + .. table:: **Table 5** entities field data structure description + + +-----------------------+-----------------------+-----------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+=======================================================================+ + | instance | Object | DB instance queried in the task. | + | | | | + | | | For details, see :ref:`Table 6 `. | + +-----------------------+-----------------------+-----------------------------------------------------------------------+ + | resource_ids | List | Resource ID involved in a task. | + +-----------------------+-----------------------+-----------------------------------------------------------------------+ + + .. _gaussdb_04_0014__table975183423611: + + .. table:: **Table 6** entities.instance field data structure description + + +-----------+--------+---------------------------------------------------------------------------------------+ + | Name | Type | Description | + +===========+========+=======================================================================================+ + | endpoint | String | DB instance connection address. | + +-----------+--------+---------------------------------------------------------------------------------------+ + | type | String | DB instance type. | + +-----------+--------+---------------------------------------------------------------------------------------+ + | datastore | Object | DB information. For details, see :ref:`Table 7 `. | + +-----------+--------+---------------------------------------------------------------------------------------+ + + .. _gaussdb_04_0014__table173094268581: + + .. table:: **Table 7** datastore field data structure description + + ======= ====== =========== + Name Type Description + ======= ====== =========== + type String DB engine. + version String DB version. + ======= ====== =========== + + .. table:: **Table 8** entities field data structure description (binding or unbinding an EIP) + + ========= ====== ===================== + Name Type Description + ========= ====== ===================== + public_ip String EIP used in the task. + ========= ====== ===================== + + .. note:: + + In the response example, some tasks in the task center are used as examples. + +- Example normal response + + .. code-block:: text + + { + "job": { + "id": "31b8ae23-c687-4d80-b7b4-42a66c9bb886", + "name": " RestartGaussDBInstance", + "status": "Completed", + "created": "2018-08-06T10:41:14+0000", + "ended": "2018-08-06T16:41:14+0000", + "process": "", + "instance": { + "id": "a48e43ff268f4c0e879652d65e63d0fbin01", + "name": "DO-NOT-TOUCH-mgr2-gaussdb" + }, + "entities": {} + } + } + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/querying_database_specifications.rst b/api-ref/source/api/querying_database_specifications.rst new file mode 100644 index 0000000..1338106 --- /dev/null +++ b/api-ref/source/api/querying_database_specifications.rst @@ -0,0 +1,142 @@ +:original_name: gaussdb_04_0002.html + +.. _gaussdb_04_0002: + +Querying Database Specifications +================================ + +Function +-------- + +This API is used to query the database specifications of a specified DB engine version. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + GET https://{*Endpoint*}/mysql/v3/{project_id}/flavors/{database}?version_name={version_name}&spec_code={spec_code} + +- Example + + GET https://{*Endpoint*}/mysql/v3/0483b6b16e954cb88930a360d2c4e663/flavors/gaussdb-mysql?version_name=8.0&spec_code=gaussdb.mysql.xlarge.x86.4 + +- Parameter description + + .. table:: **Table 1** Parameter description + + +------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------+ + | Name | Mandatory | Type | Description | + +========================+=================+=================+=======================================================================================================================+ + | project_id | Yes | String | Project ID of a tenant in a region. | + | | | | | + | | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------+ + | database | Yes | String | DB engine. Its value can be any of the following and is case-insensitive: | + | | | | | + | | | | - gaussdb-mysql | + +------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------+ + | version_name | No | String | DB version number. To obtain this value, see :ref:`Querying Version Information About a DB Engine `. | + | | | | | + | | | | Currently, only MySQL 8.0 is supported. | + +------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------+ + | availability_zone_mode | Yes | String | AZ type of the specification. The value can be **single** or **multi**. | + +------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------+ + | spec_code | No | String | Specification code. | + +------------------------+-----------------+-----------------+-----------------------------------------------------------------------------------------------------------------------+ + +Request +------- + +None. + +Response +-------- + +- Normal response + + .. table:: **Table 2** Parameter description + + +-----------------------+-----------------------+-------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+===================================================================+ + | flavors | Array of objects | DB instance specification list. | + | | | | + | | | For details, see :ref:`Table 3 `. | + +-----------------------+-----------------------+-------------------------------------------------------------------+ + + .. _gaussdb_04_0002__table66531170: + + .. table:: **Table 3** flavors field data structure description + + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+==========================================================================================+ + | vcpus | String | Number of vCPUs. For example, the value **1** indicates 1 vCPU. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + | ram | Integer | Memory size in gigabyte (GB). | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + | type | String | Specification type. The value can be **arm** or **x86**. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + | id | String | Specification ID. The value must be unique. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + | spec_code | String | Resource specification code. For example: gaussdb.mysql.xlarge.x86.4. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + | version_name | String | DB version number. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + | instance_mode | String | DB instance type. Currently, only the cluster type is supported. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + | az_status | Map | Status of the AZ where the specification belongs. Its value can be any of the following: | + | | | | + | | | - **normal**: on sale. | + | | | - **unsupported**: not supported. | + | | | - **sellout**: sold out. | + +-----------------------+-----------------------+------------------------------------------------------------------------------------------+ + +- Example normal response + + .. code-block:: text + + { + "flavors":[ + { + "vcpus":"1", + "ram":"4", + "type":"x86" + "id":"3169caaf-6c2f-41d5-aadd-c8fc3d83597e", + "spec_code":"gaussdb.xlarge.x86.4", + "instance_mode":"Cluster", + "version_name": "8.0", + "az_status":{ + "az1":"normal", + "az2":"normal" + } + }, + { + "vcpus":"2", + "ram":"4", + "type":"arm" + "id":"cefb8fab-c9f7-482f-a97c-e8a0c8abe35b", + "spec_code":"gaussdb.mysql.xlarge.x86.2", + "instance_mode":"Cluster", + "version_name": "8.0", + "az_status":{ + "az1":"normal", + "az2":"normal" + } + } + ] + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api/querying_version_information_about_a_db_engine.rst b/api-ref/source/api/querying_version_information_about_a_db_engine.rst new file mode 100644 index 0000000..042ece1 --- /dev/null +++ b/api-ref/source/api/querying_version_information_about_a_db_engine.rst @@ -0,0 +1,92 @@ +:original_name: gaussdb_04_0001.html + +.. _gaussdb_04_0001: + +Querying Version Information About a DB Engine +============================================== + +Function +-------- + +This API is used to query the DB version information of a specified DB engine. + +- Learn how to :ref:`authorize and authenticate ` this API before using it. +- Before calling this API, obtain the required :ref:`region and endpoint `. + +URI +--- + +- URI format + + GET https://{*Endpoint*}/mysql/v3/{project_id}/datastores/{database_name} + +- Example + + GET https://{*Endpoint*}/mysql/v3/619d3e78f61b4be68bc5aa0b59edcf7b/datastores/gaussdb-mysql + +- Parameter description + + .. table:: **Table 1** Parameter description + + +-----------------------+-----------------------+-----------------------------------------------------------------------------------+ + | Name | Mandatory | Description | + +=======================+=======================+===================================================================================+ + | project_id | Yes | Project ID of a tenant in a region. | + | | | | + | | | To obtain this value, see :ref:`Obtaining a Project ID `. | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------+ + | database_name | Yes | DB engine. The following DB engine is supported (case-insensitive): gaussdb-mysql | + +-----------------------+-----------------------+-----------------------------------------------------------------------------------+ + +Request +------- + +None. + +Response +-------- + +- Normal response + + .. table:: **Table 2** Parameter description + + +-----------------------+-----------------------+-------------------------------------------------------------------+ + | Name | Type | Description | + +=======================+=======================+===================================================================+ + | datastores | Array of objects | DB version list. | + | | | | + | | | For details, see :ref:`Table 3 `. | + +-----------------------+-----------------------+-------------------------------------------------------------------+ + + .. _gaussdb_04_0001__table66531170: + + .. table:: **Table 3** datastores field data structure description + + +------+--------+-------------------------------------------------------------------------------+ + | Name | Type | Description | + +======+========+===============================================================================+ + | id | String | DB version ID. Its value is unique. | + +------+--------+-------------------------------------------------------------------------------+ + | name | String | DB version number. Only the major version number with two digits is returned. | + +------+--------+-------------------------------------------------------------------------------+ + +- Example normal response + + .. code-block:: text + + { + "datastores": [{ + "id": "87620726-6802-46c0-9028-a8785e1f1921", + "name": "8.0" + }] + } + +Status Code +----------- + +For details, see :ref:`Status Codes `. + +Error Code +---------- + +For details, see :ref:`Error Codes `. diff --git a/api-ref/source/api_overview.rst b/api-ref/source/api_overview.rst new file mode 100644 index 0000000..1c9e176 --- /dev/null +++ b/api-ref/source/api_overview.rst @@ -0,0 +1,24 @@ +:original_name: gaussdb_02_0000.html + +.. _gaussdb_02_0000: + +API Overview +============ + +With GaussDB(for MySQL) APIs, you can query, set, and modify resource quotas. + ++-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| Type | Description | ++===============================+===============================================================================================================================================+ +| DB engine version query | Query the DB version information of a specified DB engine. | ++-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| DB specifications query | Query the DB specifications of a specified DB engine version. | ++-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| DB instance management | Create DB instances, query DB instance lists, query DB instance details, delete DB instances, create read replicas, and delete read replicas. | ++-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| Parameter template management | Query parameter templates. | ++-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| Quota management | Query, set, and modify resource quotas. | ++-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ +| Task information query | Obtain task information about the task center. | ++-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/api-ref/source/appendix/abnormal_request_results.rst b/api-ref/source/appendix/abnormal_request_results.rst new file mode 100644 index 0000000..fc0d398 --- /dev/null +++ b/api-ref/source/appendix/abnormal_request_results.rst @@ -0,0 +1,27 @@ +:original_name: gaussdb_10_0001.html + +.. _gaussdb_10_0001: + +Abnormal Request Results +======================== + +- Abnormal response description + + .. table:: **Table 1** Abnormal response description + + +------------+--------+---------------------------------------------------------------------------------------------------------------------+ + | Name | Type | Description | + +============+========+=====================================================================================================================+ + | error_code | String | Returned error code when a task submission exception occurs. For details, see :ref:`Error Codes `. | + +------------+--------+---------------------------------------------------------------------------------------------------------------------+ + | error_msg | String | Returned error description when a task submission exception occurs. | + +------------+--------+---------------------------------------------------------------------------------------------------------------------+ + +- Example response + + .. code-block:: text + + { + "error_code": "DBS.280234", + "error_msg": "Invalid DB instance name." + } diff --git a/api-ref/source/appendix/error_codes.rst b/api-ref/source/appendix/error_codes.rst new file mode 100644 index 0000000..dfa5a25 --- /dev/null +++ b/api-ref/source/appendix/error_codes.rst @@ -0,0 +1,90 @@ +:original_name: gaussdb_10_0003.html + +.. _gaussdb_10_0003: + +Error Codes +=========== + +The following table describes error codes. + +.. table:: **Table 1** Error codes + + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | Error Code | Response Code | Description | + +============+===============+=================================================================================================+ + | DBS.200040 | 400 | The DB engine type must be specified. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.200041 | 400 | Invalid DB engine type. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.200051 | 500 | Invalid deployment mode. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.200910 | 400 | The maximum number of read replicas has been reached. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280203 | 400 | This is a weak password. Please enter a strong password. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280216 | 400 | Invalid backup start time. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280227 | 400 | The new storage space must be greater than the current storage and must be a multiple of 10 GB. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280234 | 400 | Invalid DB instance name. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280235 | 400 | Invalid database type. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280236 | 400 | Invalid database version. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280237 | 400 | DB engine information must be specified. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280238 | 400 | The DB engine or version is not supported. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280242 | 400 | Storage space is out of range. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280243 | 400 | Invalid region. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280247 | 400 | Invalid VPC ID. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280248 | 400 | Invalid subnet ID. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280260 | 400 | Invalid AZ. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280266 | 400 | Storage space must be a multiple of 10. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280288 | 400 | Invalid specification code. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280305 | 400 | Invalid security group. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280311 | 400 | Storage space must be specified. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280342 | 400 | Invalid cluster mode. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280365 | 400 | Invalid billing mode. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280431 | 400 | Invalid billing period. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280433 | 400 | Invalid enterprise project ID. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280434 | 400 | Invalid specification code | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280447 | 400 | Invalid time zone. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280448 | 400 | The storage type is sold out. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280450 | 400 | The DB instance specifications are sold out. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280462 | 400 | Invalid auto renewal parameter. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280463 | 400 | Invalid auto payment parameter. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280464 | 400 | Primary AZ cannot be defined in a single AZ. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280465 | 400 | Invalid password. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280466 | 400 | Invalid read replica quantity. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280467 | 400 | Invalid read replica failover priority. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280468 | 400 | Invalid DB instance type. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280470 | 400 | The primary node and read replicas must be located in different AZs. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ + | DBS.280471 | 500 | CBC error. | + +------------+---------------+-------------------------------------------------------------------------------------------------+ diff --git a/api-ref/source/appendix/gaussdbfor_mysql_monitoring_metrics.rst b/api-ref/source/appendix/gaussdbfor_mysql_monitoring_metrics.rst new file mode 100644 index 0000000..c83fa50 --- /dev/null +++ b/api-ref/source/appendix/gaussdbfor_mysql_monitoring_metrics.rst @@ -0,0 +1,187 @@ +:original_name: gaussdb_10_0006.html + +.. _gaussdb_10_0006: + +GaussDB(for MySQL) Monitoring Metrics +===================================== + +Function Description +-------------------- + +This section describes namespaces, descriptions, and dimensions of monitoring metrics to be reported to Cloud Eye. You can use APIs provided by Cloud Eye to retrieve monitoring metrics and alarm information generated for GaussDB(for MySQL). + +Namespace +--------- + +SYS.GAUSSDB + +Monitoring Metrics +------------------ + +.. table:: **Table 1** Monitoring metrics + + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | Metric | Name | Description | Value Range | Remarks | + +================================================+================================================+===================================================================================================+====================+======================================================+ + | gaussdb_mysql001_cpu_util | CPU Usage | CPU usage of the monitored object | 0-100% | Monitored object: ECS | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql002_mem_util | Memory Usage | Memory usage of the monitored object | 0-100% | Monitored object: ECS | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql004_bytes_in | Network Input Throughput | Incoming traffic in bytes per second | >=0 Bytes/s | Monitored object: ECS | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql005_bytes_out | Network Output Throughput | Outgoing traffic in bytes per second | >=0 Bytes/s | Monitored object: ECS | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql006_conn_count | Total Connections | Total number of connections that attempt to connect to the MySQL server | >=0 Counts | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql007_conn_active_count | Current Active Connections | Number of current active connections | >=0 Counts | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql008_qps | QPS | Query times of SQL statements (including storage procedures) per second | >=0 Executions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql009_tps | TPS | Execution times of submitted and rollback transactions per second | >=0 Transactions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql010_innodb_buf_usage | Buffer Pool Usage | Ratio of dirty data to all data in the InnoDB buffer | 0-1 | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql011_innodb_buf_hit | Buffer Pool Hit Ratio | Ratio of read hits to read requests in the InnoDB buffer | 0-100% | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql012_innodb_buf_dirty | Buffer Pool Dirty Block Ratio | Ratio of used pages to total pages in the InnoDB buffer | 0-1 | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql013_innodb_reads | InnoDB Read Throughput | Number of read bytes per second in the InnoDB buffer | >=0 Bytes/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql014_innodb_writes | InnoDB Write Throughput | Number of write bytes per second in the InnoDB buffer | >=0 Counts/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql017_innodb_log_write_req_count | InnoDB Log Write Requests per Second | Number of InnoDB log write requests per second | >=0 Counts/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql020_temp_tbl_count | Temporary Tables | Number of temporary tables automatically created on hard disks when MySQL statements are executed | >=0 Counts | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql028_comdml_del_count | DELETE Statements per Second | Number of DELETE statements executed per second | >=0 Executions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql029_comdml_ins_count | INSERT Statements per Second | Number of INSERT statements executed per second | >=0 Executions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql030_comdml_ins_sel_count | INSERT_SELECT Statements per Second | Number of INSERT_SELECT statements executed per second | >=0 Executions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql031_comdml_rep_count | REPLACE Statements per Second | Number of REPLACE statements executed per second | >=0 Executions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql032_comdml_rep_sel_count | REPLACE_SELECTION Statements per Second | Number of REPLACE_SELECTION statements executed per second | >=0 Executions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql033_comdml_sel_count | SELECT Statements per Second | Number of SELECT statements executed per second | >=0 Executions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql034_comdml_upd_count | UPDATE Statements per Second | Number of UPDATE statements executed per second | >=0 Executions/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql035_innodb_del_row_count | Row Delete Frequency | Number of rows deleted from the InnoDB table per second | >=0 Rows/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql036_innodb_ins_row_count | Row Insert Frequency | Number of rows inserted into the InnoDB table per second | >=0 Rows/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql037_innodb_read_row_count | Row Read Frequency | Number of rows read from the InnoDB table per second | >=0 Rows/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql038_innodb_upd_row_count | Row Update Frequency | Number of rows updated into the InnoDB table per second | >=0 Rows/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql048_disk_used_size | Used Storage Space | Used storage space of the monitored object | 0-4000 GB | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql072_conn_usage | Connection Usage | Percent of used MySQL connections to the total number of connections | 0~100% | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql074_slow_queries | Slow Query Logs | Number of MySQL slow query logs generated per minute | >=0 Counts/Minute | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql077_replication_delay | Replication Delay | Data replication delay between the primary node and read replicas | >=0 s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql104_dfv_write_delay | Storage Write Latency | Average latency of writing data to the storage layer in a specified period | >=0 ms | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql105_dfv_read_delay | Storage Read Latency | Average latency of reading data from the storage layer in a specified period | >=0 ms | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql106_innodb_row_lock_current_waits | InnoDB Row Locks | Number of row locks being waited by operations on the InnoDB table | >=0 Counts | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql107_comdml_ins_and_ins_sel_count | INSERT and INSERT_SELECT Statements per Second | Number of INSERT and INSERT_SELECT statements executed per second | >=0 Counts/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql108_com_commit_count | COMMIT Statements per Second | Number of COMMIT statements executed per second | >=0 Counts/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql109_com_rollback_count | ROLLBACK Statements per Second | Number of ROLLBACK statements executed per second | >=0 Counts/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql110_innodb_bufpool_reads | InnoDB Storage Layer Read Requests per Second | Number of times that InnoDB reads data from the storage layer per second | >=0 Counts/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + | gaussdb_mysql111_innodb_bufpool_read_requests | InnoDB Read Requests per Second | Number of InnoDB read requests per second | >=0 Counts/s | Monitored object: database | + | | | | | | + | | | | | Monitored instance type: GaussDB(for MySQL) instance | + +------------------------------------------------+------------------------------------------------+---------------------------------------------------------------------------------------------------+--------------------+------------------------------------------------------+ + +Dimension +--------- + +========================= ============================================ +Key Value +========================= ============================================ +gaussdb_mysql_instance_id GaussDB (for MySQL) instance ID. +gaussdb_mysql_node_id Node ID of the GaussDB (for MySQL) instance. +========================= ============================================ diff --git a/api-ref/source/appendix/index.rst b/api-ref/source/appendix/index.rst new file mode 100644 index 0000000..414b142 --- /dev/null +++ b/api-ref/source/appendix/index.rst @@ -0,0 +1,22 @@ +:original_name: gaussdb_10_0000.html + +.. _gaussdb_10_0000: + +Appendix +======== + +- :ref:`Abnormal Request Results ` +- :ref:`Status Codes ` +- :ref:`Error Codes ` +- :ref:`Obtaining a Project ID ` +- :ref:`GaussDB(for MySQL) Monitoring Metrics ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + abnormal_request_results + status_codes + error_codes + obtaining_a_project_id + gaussdbfor_mysql_monitoring_metrics diff --git a/api-ref/source/appendix/obtaining_a_project_id.rst b/api-ref/source/appendix/obtaining_a_project_id.rst new file mode 100644 index 0000000..c03b2d1 --- /dev/null +++ b/api-ref/source/appendix/obtaining_a_project_id.rst @@ -0,0 +1,66 @@ +:original_name: gaussdb_10_0004.html + +.. _gaussdb_10_0004: + +Obtaining a Project ID +====================== + +Scenarios +--------- + +When calling APIs, you need to specify the project ID in some URLs. To do so, you need to obtain the project ID first. Two methods are available: + +- :ref:`Obtaining the Project ID by Calling an API ` +- :ref:`Obtain a Project ID from the Console ` + +.. _gaussdb_10_0004__section85791974381: + +Obtaining the Project ID by Calling an API +------------------------------------------ + +The API used to obtain a project ID is **GET https://{Endpoint}/v3/projects**. **{Endpoint}** is the IAM endpoint and can be obtained from `Regions and Endpoints `__. For details about API authentication, see :ref:`Authentication `. + +The following is an example response. The value of **id** is the project ID. + +.. code-block:: + + { + "projects": [ + { + "domain_id": "65382450e8f64ac0870cd180d14e684b", + "is_domain": false, + "parent_id": "65382450e8f64ac0870cd180d14e684b", + "name": "project_name", + "description": "", + "links": { + "next": null, + "previous": null, + "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" + }, + "id": "a4a5d4098fb4474fa22cd05f897d6b99", + "enabled": true + } + ], + "links": { + "next": null, + "previous": null, + "self": "https://www.example.com/v3/projects" + } + } + +.. _gaussdb_10_0004__section196091152113715: + +Obtain a Project ID from the Console +------------------------------------ + +#. Register yourself on the management console and log in to it. + +#. Move your pointer over the username and select My Credentials in the displayed drop-down list. + + On the **My Credentials** page, view project IDs in the project list. + + + .. figure:: /_static/images/en-us_image_0000001423128721.jpg + :alt: **Figure 1** Viewing project IDs + + **Figure 1** Viewing project IDs diff --git a/api-ref/source/appendix/status_codes.rst b/api-ref/source/appendix/status_codes.rst new file mode 100644 index 0000000..727eb55 --- /dev/null +++ b/api-ref/source/appendix/status_codes.rst @@ -0,0 +1,120 @@ +:original_name: gaussdb_10_0002.html + +.. _gaussdb_10_0002: + +Status Codes +============ + +Status code list: + +.. table:: **Table 1** Status Code + + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Status Code | Message | Description | + +=======================+===============================+=====================================================================================================================================================================================================================================================================================================================================================+ + | 100 | Continue | The client should continue with its request. | + | | | | + | | | This interim response is used to inform the client that the initial part of the request has been received and has not yet been rejected by the server. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 101 | Switching Protocols | The protocol should be switched. The protocol can only be switched to a more advanced protocol. | + | | | | + | | | For example, the current HTTP protocol is switched to a later version. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 200 | OK | Request succeeded. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 201 | Created | The request for creating a resource or task has been fulfilled. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 202 | Accepted | The request has been accepted, but the processing has not been completed. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 203 | Non-Authoritative Information | Unauthorized information. The request is successful. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 204 | NoContent | The server has successfully processed the request, but has not returned any content. | + | | | | + | | | The status code is returned in response to an HTTP OPTIONS request. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 205 | Reset Content | The server has fulfilled the request, but the requester is required to reset the content. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 206 | Partial Content | The server has processed certain GET requests. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 300 | Multiple Choices | There are multiple options for the location of the requested resource. The response contains a list of resource characteristics and addresses from which the user or user agent (such as a browser) can choose the most appropriate one. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 301 | Moved Permanently | The requested resource has been assigned a new permanent URI, and the new URI is contained in the response. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 302 | Found | The requested resource was temporarily moved. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 303 | See Other | The response to the request can be found under a different URI and should be retrieved using a GET or POST method. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 304 | Not Modified | The requested resource has not been modified. In such a case, there is no need to retransmit the resource since the client still has a previously-downloaded copy. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 305 | Use Proxy | The requested resource must be accessed through a proxy. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 306 | Unused | The HTTP status code is no longer used. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 400 | BadRequest | Invalid request. | + | | | | + | | | The client should not repeat the request without modifications. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 401 | Unauthorized | The status code is returned after the client provides the authentication information, indicating that the authentication information is incorrect or invalid. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 402 | Payment Required | This status code is reserved for future use. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 403 | Forbidden | The server understood the request, but is refusing to fulfill it. | + | | | | + | | | The client should not repeat the request without modifications. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 404 | NotFound | The requested resource cannot be found. | + | | | | + | | | The client should not repeat the request without modifications. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 405 | MethodNotAllowed | The method specified in the request is not supported for the requested resource. | + | | | | + | | | The client should not repeat the request without modifications. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 406 | Not Acceptable | The server cannot fulfill the request according to the content characteristics of the request. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 407 | Proxy Authentication Required | This status code is similar to 401, but indicates that the client must first authenticate itself with the proxy. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 408 | Request Time-out | The server timed out waiting for the request. | + | | | | + | | | The client may repeat the request without modifications at any later time. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 409 | Conflict | The request could not be processed due to a conflict. | + | | | | + | | | This status code indicates that the resource that the client attempts to create already exits, or the request fails to be processed because of the update of the conflict request. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 410 | Gone | The requested resource is no longer available. | + | | | | + | | | The requested resource has been deleted permanently. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 411 | Length Required | The server refuses to process the request without a defined Content-Length. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 412 | Precondition Failed | The server does not meet one of the preconditions that the requester puts on the request. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 413 | Request Entity Too Large | The request is larger than that a server is able to process. The server may close the connection to prevent the client from continuing the request. If the server temporarily cannot process the request, the response will contain a Retry-After header field. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 414 | Request-URI Too Large | The URI provided was too long for the server to process. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 415 | Unsupported Media Type | The server is unable to process the media format in the request. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 416 | Requested range not satisfied | The requested range is invalid. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 417 | Expectation Failed | The server fails to meet the requirements of the Expect request-header field. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 422 | UnprocessableEntity | The request is well-formed but is unable to be processed due to semantic errors. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 429 | TooManyRequests | The client has sent more requests than its rate limit is allowed within a given amount of time, or the server has received more requests than it is able to process within a given amount of time. In this case, it is advisable for the client to re-initiate requests after the time specified in the Retry-After header of the response expires. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 500 | InternalServerError | The server is able to receive the request but it could not understand the request. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 501 | Not Implemented | The server does not support the requested function. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 502 | Bad Gateway | The server acting as a gateway or proxy receives an invalid response from a remote server. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 503 | ServiceUnavailable | The requested service is invalid. | + | | | | + | | | The client should not repeat the request without modifications. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 504 | ServerTimeout | The request cannot be fulfilled within a given time. The response will reach the client only if the request carries a timeout parameter. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | 505 | HTTP Version not supported | The server does not support the HTTP protocol version used in the request. | + +-----------------------+-------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ diff --git a/api-ref/source/before_you_start/api_calling.rst b/api-ref/source/before_you_start/api_calling.rst new file mode 100644 index 0000000..d5add04 --- /dev/null +++ b/api-ref/source/before_you_start/api_calling.rst @@ -0,0 +1,8 @@ +:original_name: gaussdb_00_0002.html + +.. _gaussdb_00_0002: + +API Calling +=========== + +GaussDB(for MySQL) supports Representational State Transfer (REST) APIs, allowing you to call APIs using HTTPS. For details about API calling, see :ref:`Calling APIs `. diff --git a/api-ref/source/before_you_start/concepts.rst b/api-ref/source/before_you_start/concepts.rst new file mode 100644 index 0000000..edf7788 --- /dev/null +++ b/api-ref/source/before_you_start/concepts.rst @@ -0,0 +1,34 @@ +:original_name: gaussdb_00_0005.html + +.. _gaussdb_00_0005: + +Concepts +======== + +- Domain + + A domain is created upon successful registration. The domain has full access permissions for all of its cloud services and resources. It can be used to reset user passwords and grant user permissions. The domain is a payment entity and should not be used directly to perform routine management. For security purposes, create users and grant them permissions for routine management. + +- IAM User + + An IAM user is created using an account to use cloud services. Each IAM user has its own identity credentials (password and access keys). + + API authentication requires information such as the account name, username, and password. + +- Region + + A region is a geographic area in which cloud resources are deployed. Availability zones (AZs) in the same region can communicate with each other over an intranet, while AZs in different regions are isolated from each other. Deploying cloud resources in different regions can better suit certain user requirements or comply with local laws or regulations. + +- AZ + + An AZ contains one or more physical data centers. Each AZ has independent cooling, fire extinguishing, moisture-proof, and electricity facilities. Within an AZ, computing, network, storage, and other resources are logically divided into multiple clusters. AZs within a region are interconnected using high-speed optical fibers to support cross-AZ high-availability systems. + +- Project + + Projects group and isolate resources (including compute, storage, and network resources) across physical regions. A default project is provided for each region, and subprojects can be created under each default project. Users can be granted permissions to access all resources in a specific project. For more refined access control, create subprojects under a project and purchase resources in the subprojects. Users can then be assigned permissions to access only specific resources in the subprojects. + + + .. figure:: /_static/images/en-us_image_0000001422968749.gif + :alt: **Figure 1** Project isolating model + + **Figure 1** Project isolating model diff --git a/api-ref/source/before_you_start/constraints.rst b/api-ref/source/before_you_start/constraints.rst new file mode 100644 index 0000000..84936e1 --- /dev/null +++ b/api-ref/source/before_you_start/constraints.rst @@ -0,0 +1,9 @@ +:original_name: gaussdb_00_0004.html + +.. _gaussdb_00_0004: + +Constraints +=========== + +- The number of DB instances that you can create is determined by your quota. To view or increase the quota, see "Managing Quotas" in the *GaussDB(for MySQL) User Guide*. +- For more constraints, see API description. diff --git a/api-ref/source/before_you_start/endpoints.rst b/api-ref/source/before_you_start/endpoints.rst new file mode 100644 index 0000000..e8b9513 --- /dev/null +++ b/api-ref/source/before_you_start/endpoints.rst @@ -0,0 +1,8 @@ +:original_name: gaussdb_00_0003.html + +.. _gaussdb_00_0003: + +Endpoints +========= + +An endpoint is the **request address** for calling an API. Endpoints vary depending on services and regions. For the endpoints of all services, see `Regions and Endpoints `__. diff --git a/api-ref/source/before_you_start/index.rst b/api-ref/source/before_you_start/index.rst new file mode 100644 index 0000000..e10b14a --- /dev/null +++ b/api-ref/source/before_you_start/index.rst @@ -0,0 +1,22 @@ +:original_name: gaussdb_00_0011.html + +.. _gaussdb_00_0011: + +Before You Start +================ + +- :ref:`Overview ` +- :ref:`API Calling ` +- :ref:`Endpoints ` +- :ref:`Constraints ` +- :ref:`Concepts ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + overview + api_calling + endpoints + constraints + concepts diff --git a/api-ref/source/before_you_start/overview.rst b/api-ref/source/before_you_start/overview.rst new file mode 100644 index 0000000..5ace8db --- /dev/null +++ b/api-ref/source/before_you_start/overview.rst @@ -0,0 +1,10 @@ +:original_name: gaussdb_00_0001.html + +.. _gaussdb_00_0001: + +Overview +======== + +This document describes how to use application programming interfaces (APIs) to perform operations on DB instances. For details about all supported operations, see :ref:`API Overview `. + +If you plan to access GaussDB(for MySQL) through an API, ensure that you are familiar with GaussDB(for MySQL) concepts. For details, see "What Is GaussDB(for MySQL)?" in the *GaussDB(for MySQL) User Guide*. diff --git a/api-ref/source/calling_apis/authentication.rst b/api-ref/source/calling_apis/authentication.rst new file mode 100644 index 0000000..0a507ac --- /dev/null +++ b/api-ref/source/calling_apis/authentication.rst @@ -0,0 +1,28 @@ +:original_name: gaussdb_03_0001.html + +.. _gaussdb_03_0001: + +Authentication +============== + +Token authentication must be performed to call APIs. + +Authentication using tokens: General requests are authenticated using tokens. + +Token-based Authentication +-------------------------- + +.. note:: + + The validity period of a token is 24 hours. When using a token for authentication, cache it to prevent frequently calling the IAM API used to obtain a user token. + +A token specifies temporary permissions in a computer system. During API authentication using a token, the token is added to requests to get permissions for calling the API. + +In :ref:`Making an API Request `, the process of calling the API used to `obtain a user token `__ is described. + +After a token is obtained, add the **X-Auth-Token** header field must be added to requests to specify the token when calling other APIs. For example, if the token is **ABCDEFJ....**, **X-Auth-Token: ABCDEFJ....** can be added to a request as follows: + +:: + + Content-Type: application/json + X-Auth-Token: ABCDEFJ.... diff --git a/api-ref/source/calling_apis/index.rst b/api-ref/source/calling_apis/index.rst new file mode 100644 index 0000000..308827b --- /dev/null +++ b/api-ref/source/calling_apis/index.rst @@ -0,0 +1,18 @@ +:original_name: gaussdb_03_0000.html + +.. _gaussdb_03_0000: + +Calling APIs +============ + +- :ref:`Making an API Request ` +- :ref:`Authentication ` +- :ref:`Response ` + +.. toctree:: + :maxdepth: 1 + :hidden: + + making_an_api_request + authentication + response diff --git a/api-ref/source/calling_apis/making_an_api_request.rst b/api-ref/source/calling_apis/making_an_api_request.rst new file mode 100644 index 0000000..ecdf93a --- /dev/null +++ b/api-ref/source/calling_apis/making_an_api_request.rst @@ -0,0 +1,132 @@ +:original_name: gaussdb_03_0005.html + +.. _gaussdb_03_0005: + +Making an API Request +===================== + +This section describes the structure of a REST API, and uses the IAM API for `obtaining a user token `__ as an example to describe how to call an API. The obtained token is used to authenticate the calling of other APIs. + +Request URI +----------- + +A request URI consists of the following: + +**{URI-scheme}://{Endpoint}/{resource-path}?{query-string}** + +Although a request URI is included in a request header, most programming languages or frameworks require the request URI to be separately transmitted, rather than being conveyed in a request message. + +.. table:: **Table 1** Parameters in a URI + + +---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Parameter | Description | + +===============+===================================================================================================================================================================================================================================================================+ + | URI-scheme | Protocol used to transmit requests. All APIs use HTTPS. | + +---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | Endpoint | Domain name or IP address of the server bearing the REST service. The endpoint varies between services in different regions. It can be obtained from `Regions and Endpoints `__. | + +---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | resource-path | Access path of an API for performing a specified operation. Obtain the path from the URI of an API. For example, the **resource-path** of the API used to obtain a user token is **/v3/auth/tokens**. | + +---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + | query-string | Query parameter, which is optional. Ensure that a question mark (?) is included before each query parameter that is in the format of "Parameter name=Parameter value". For example, **? limit=10** indicates that a maximum of 10 data records will be displayed. | + +---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ + +.. note:: + + To simplify the URI display in this document, each API is provided only with a resource-path and a request method. The **URI-scheme** of all APIs is **HTTPS**, and the endpoints of all APIs in the same region are identical. + +Request Methods +--------------- + +The HTTP protocol defines the following request methods that can be used to send a request to the server: + +.. table:: **Table 2** HTTP methods + + +--------+---------------------------------------------------------------------+ + | Method | Description | + +========+=====================================================================+ + | GET | Requests the server to return specified resources. | + +--------+---------------------------------------------------------------------+ + | PUT | Requests the server to update specified resources. | + +--------+---------------------------------------------------------------------+ + | POST | Requests the server to add resources or perform special operations. | + +--------+---------------------------------------------------------------------+ + +For example, in the case of the API used to `obtain a user token `__, the request method is POST. The request is as follows: + +Request Header +-------------- + +You can also add additional fields to a request, such as the fields required by a specified URI or an HTTP method. For example, to request for the authentication information, add **Content-Type**, which specifies the request body type. + +:ref:`Table 3 ` lists common request header fields. + +.. _gaussdb_03_0005__table1986821153312: + +.. table:: **Table 3** Common request headers + + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+--------------------------------------------+ + | Name | Description | Mandatory | Example | + +=================+===================================================================================================================================================================================================================================================================+=======================================================+============================================+ + | Host | Specifies the requested server information, which can be obtained from the URL of the service API. The value is in the *hostname[:port]* format. If the port number is not specified, the default port is used. The default port number for **https** is **443**. | No | code.test.com | + | | | | | + | | | This parameter is mandatory for AK/SK authentication. | or | + | | | | | + | | | | code.test.com:443 | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+--------------------------------------------+ + | Content-Type | Specifies the MIME type of the request body. You are advised to use the default value **application/json**. For APIs used to upload objects or images, the value can vary depending on the flow type. | Yes | application/json | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+--------------------------------------------+ + | Content-Length | Specifies the length of the request body. The unit is byte. | No | 3495 | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+--------------------------------------------+ + | X-Project-Id | Specifies the project ID. Obtain the project ID by following the instructions in :ref:`Obtaining a Project ID `. | No | e9993fc787d94b6c886cbaa340f9c0f4 | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+--------------------------------------------+ + | X-Auth-Token | Specifies the user token. | No | The following is part of an example token: | + | | | | | + | | The user token is a response to the API used to `obtain a user token `__. This API is the only one that does not require authentication. | This parameter is mandatory for token authentication. | MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ | + | | | | | + | | After the request is processed, the value of **X-Subject-Token** in the message header is the token value. | | | + +-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------------------------------------+--------------------------------------------+ + +The API used to `obtain a user token `__ does not require authentication. Therefore, only the **Content-Type** field needs to be added to requests for calling the API. An example of such requests is as follows: + +(Optional) Request Body +----------------------- + +This part is optional. The body of a request is often sent in a structured format (for example, JSON or XML) as specified in the **Content-Type** header field. If the request body contains full-width characters, these characters must be coded in UTF-8. + +The request body varies between APIs. Some APIs do not require the request body, such as the APIs requested using the GET and DELETE methods. + +In the case of the API used to `obtain a user token `__, the request parameters and parameter description can be obtained from the API request. The following provides an example request with a body included. Replace **username**, **domainname**, **\*******\*** (login password), and **xxxxxxxxxxxxxxxxxx** (project name) with actual values. You can obtain the values from `Regions and Endpoints `__. + +.. note:: + + The **scope** parameter specifies where a token takes effect. You can set **scope** to an account or a project under an account. In the following example, the token takes effect only for the resources in a specified project. For more information about this API, see `Obtaining a User Token `__. + +.. code-block:: + + Content-Type: application/json + + { + "auth": { + "identity": { + "methods": [ + "password" + ], + "password": { + "user": { + "name": "username", + "password": "********", + "domain": { + "name": "domainname" + } + } + } + }, + "scope": { + "project": { + "name": "xxxxxxxxxxxxxxxxxx" + } + } + } + } + +If all data required for the API request is available, you can send the request to call the API through `curl `__, `Postman `__, or coding. In the response to the API used to obtain a user token, **x-subject-token** is the desired user token. This token can then be used to authenticate the calling of other APIs. diff --git a/api-ref/source/calling_apis/response.rst b/api-ref/source/calling_apis/response.rst new file mode 100644 index 0000000..81d86b9 --- /dev/null +++ b/api-ref/source/calling_apis/response.rst @@ -0,0 +1,62 @@ +:original_name: gaussdb_03_0006.html + +.. _gaussdb_03_0006: + +Response +======== + +Status Code +----------- + +After sending a request, you will receive a response, including the status code, response header, and response body. + +A status code is a group of digits ranging from 1xx to 5xx. It indicates the status of a response. For more information, see :ref:`Status Codes `. + +For example, if status code **201** is returned for calling the API used to `obtain a user token `__, the request is successful. + +Response Header +--------------- + +Similar to a request, a response also has a header, for example, **Content-Type**. + +:ref:`Figure 1 ` shows the response header for the API used to `obtain a user token `__. The **x-subject-token** header field is the desired user token. This token can then be used to authenticate the calling of other APIs. + +.. _gaussdb_03_0006__fig4865141011511: + +.. figure:: /_static/images/en-us_image_0000001372529646.png + :alt: **Figure 1** Header fields of the response to the request for obtaining a user token + + **Figure 1** Header fields of the response to the request for obtaining a user token + +(Optional) Response Body +------------------------ + +This part is optional. The body of a response is often returned in structured format as specified in the **Content-Type** header field. The response body transfers content except the response header. + +The following is part of the response body for the API used to `obtain a user token `__. + +.. code-block:: + + { + "token": { + "expires_at": "2019-02-13T06:52:13.855000Z", + "methods": [ + "password" + ], + "catalog": [ + { + "endpoints": [ + { + "region_id": "az-01", + ...... + +If an error occurs during API calling, an error code and a message will be displayed. The following shows an error response body. + +.. code-block:: + + { + "error_code": "AS.0001", + "error_msg": "The format of message is error" + } + +In the response body, **error_code** is an error code, and **error_msg** provides information about the error. diff --git a/api-ref/source/change_history.rst b/api-ref/source/change_history.rst new file mode 100644 index 0000000..75d9734 --- /dev/null +++ b/api-ref/source/change_history.rst @@ -0,0 +1,17 @@ +:original_name: changeHistory.html + +.. _changeHistory: + +Change History +============== + ++-----------------------------------+-------------------------------------------------------------------------------------+ +| Released On | Description | ++===================================+=====================================================================================+ +| 2022-10-30 | This issue is the second official release. | +| | | +| | - Optimized the content in :ref:`Querying a Parameter Template `. | +| | - Optimized the content in :ref:`Querying a DB Instance List `. | ++-----------------------------------+-------------------------------------------------------------------------------------+ +| 2020-05-30 | This issue is the first official release. | ++-----------------------------------+-------------------------------------------------------------------------------------+ diff --git a/api-ref/source/conf.py b/api-ref/source/conf.py index d67562c..9c66273 100644 --- a/api-ref/source/conf.py +++ b/api-ref/source/conf.py @@ -24,7 +24,7 @@ extensions = [ otcdocs_auto_name = False otcdocs_auto_version = False -project = 'GaussDB Enterprise-class Distributed Database compatible with MySQL' +project = 'GaussDB (for MySQL)' otcdocs_repo_name = 'docs/gaussdb-mysql' # Those variables are required for edit/bug links otcdocs_git_fqdn = 'gitea.eco.tsi-dev.otc-service.com' @@ -86,7 +86,7 @@ html_theme_options = { # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". -html_title = "GaussDB Enterprise-class Distributed Database compatible with MySQL - API Reference" +html_title = "GaussDB (for MySQL) - API Reference" # Add any paths that contain custom static files (such as style sheets) here, @@ -98,6 +98,6 @@ html_static_path = ['_static'] latex_documents = [ ('index', 'gaussdb_mysql-api-ref.tex', - u'GaussDB Enterprise-class Distributed Database compatible with MySQL - API Reference', + u'GaussDB (for MySQL) - API Reference', u'OpenTelekomCloud', 'manual'), ] diff --git a/api-ref/source/index.rst b/api-ref/source/index.rst index d7ffd75..c42ed2e 100644 --- a/api-ref/source/index.rst +++ b/api-ref/source/index.rst @@ -1,4 +1,13 @@ -=================================================================================== -GaussDB Enterprise-class Distributed Database compatible with MySQL - API Reference -=================================================================================== +=================================== +GaussDB (for MySQL) - API Reference +=================================== +.. toctree:: + :maxdepth: 1 + + before_you_start/index + api_overview + calling_apis/index + api/index + appendix/index + change_history