@spinnaker/tencentcloud 0.0.84 → 2025.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +552 -1
- package/dist/index.js.map +1 -1
- package/package.json +4 -3
package/dist/index.js
CHANGED
|
@@ -1,2 +1,553 @@
|
|
|
1
|
-
import{module as e}from"angular";import{HelpContentsRegistry as t,REST as n,AccountService as l,StageConfigField as r,FormikFormField as a,NumberInput as i,SelectInput as c,NgReact as o,FormikStageConfig as s,FormValidator as C,Registry as d,CheckboxInput as u,ReactInject as p,ApplicationNameValidator as v,FirewallLabels as m,CloudProviderRegistry as g,DeploymentStrategyRegistry as h,SETTINGS as f}from"@spinnaker/core";import{$q as E}from"ngimport";import b from"react";import{cloneDeep as w}from"lodash";const F={};Object.keys(F).forEach((e=>t.register(e,F[e])));class y{findImages(e){return!e.q||e.q.length<3?E.when([{message:"Please enter at least 3 characters...",disabled:!0}]):n("/images/find").query({...e,provider:"tencentcloud"}).get().catch((()=>[]))}getImage(e,t,l){return n("/images").path(l,t,e).query({provider:"tencentcloud"}).get().then((e=>e&&e.length?e[0]:null)).catch((()=>null))}}const{useEffect:S,useState:D}=b,{AccountRegionClusterSelector:k}=o;function N({application:e,formik:t,pipeline:n}){const o=t.values,{setFieldValue:s}=t,[C,d]=D([]);S((()=>{var t,n,r,a,i,c,C;l.listAccounts("tencentcloud").then((e=>{d(e)})),o.isNew&&(null==(t=null==e?void 0:e.attributes)?void 0:t.platformHealthOnlyShowOverride)&&(null==(n=null==e?void 0:e.attributes)?void 0:n.platformHealthOnly)&&s("interestingHealthProviderNames",["Tencentcloud"]),!o.credentials&&(null==(r=null==e?void 0:e.defaultCredentials)?void 0:r.tencentcloud)&&s("credentials",null==(a=null==e?void 0:e.defaultCredentials)?void 0:a.tencentcloud),!(null==(i=null==o?void 0:o.regions)?void 0:i.length)&&(null==(c=null==e?void 0:e.defaultRegions)?void 0:c.tencentcloud)&&s("regions",[...o.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===o.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===o.preferLargerOverNewer&&s("preferLargerOverNewer","false")}),[]);return b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(k,{application:e,clusterField:"cluster",component:o,accounts:C}),b.createElement(r,{label:"Disable Options"},b.createElement("div",{className:"form-inline"},"Keep the",b.createElement(a,{name:"remainingEnabledServerGroups",required:!0,input:e=>b.createElement(i,{...e,min:0})}),b.createElement(a,{name:"preferLargerOverNewer",required:!0,input:e=>b.createElement(c,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),(u="server group",1===o.remainingEnabledServerGroups?u:u+"s")," enabled.")));var u}d.pipeline.registerStage({provides:"disableCluster",key:"disableCluster",cloudProvider:"tencentcloud",component:function({application:e,pipeline:t,stage:n,updateStage:l}){const r=b.useMemo((()=>({cloudProvider:"tencentcloud",regions:n.regions||[],...w(n)})),[]);return b.createElement(s,{application:e,onChange:l,pipeline:t,stage:r,render:e=>b.createElement(N,{...e})})},validateFn:e=>{const t=new C(e);return t.field("credentials","Account").required(),t.field("regions","Regions").required(),t.field("cluster","Cluster").required(),t.validateForm()}});const{useEffect:O,useState:A}=b,{AccountRegionClusterSelector:x}=o;function q({application:e,formik:t,pipeline:n}){const c=t.values,{setFieldValue:o}=t,[s,C]=A([]);return O((()=>{var t,n,r,a,i,s,d;l.listAccounts("tencentcloud").then((e=>{C(e)})),c.isNew&&(null==(t=null==e?void 0:e.attributes)?void 0:t.platformHealthOnlyShowOverride)&&(null==(n=null==e?void 0:e.attributes)?void 0:n.platformHealthOnly)&&o("interestingHealthProviderNames",["Tencentcloud"]),!c.credentials&&(null==(r=null==e?void 0:e.defaultCredentials)?void 0:r.tencentcloud)&&o("credentials",null==(a=null==e?void 0:e.defaultCredentials)?void 0:a.tencentcloud),!(null==(i=null==c?void 0:c.regions)?void 0:i.length)&&(null==(s=null==e?void 0:e.defaultRegions)?void 0:s.tencentcloud)&&o("regions",[...c.regions,null==(d=null==e?void 0:e.defaultRegions)?void 0:d.tencentcloud]),void 0===c.remainingEnabledServerGroups&&o("remainingEnabledServerGroups",1),void 0===c.preferLargerOverNewer&&o("preferLargerOverNewer","false")}),[]),b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(x,{application:e,clusterField:"cluster",component:c,accounts:s}),b.createElement(r,{label:"Rollback Options"},b.createElement("div",{className:"row"},b.createElement("div",{className:"col-sm-10 col-sm-offset-2"},"Wait",b.createElement(a,{name:"wait",required:!0,input:e=>b.createElement(i,{...e,min:0})}),"seconds between regional rollbacks."),b.createElement("div",{className:"col-sm-10 col-sm-offset-2"},"Consider rollback successful when",b.createElement(a,{name:"remainingEnabledServerGroups",required:!0,input:e=>b.createElement(i,{...e,min:0,max:100})}),"percent of instances are healthy."))))}d.pipeline.registerStage({provides:"rollbackCluster",key:"rollbackCluster",cloudProvider:"tencentcloud",component:function({application:e,pipeline:t,stage:n,updateStage:l}){const r=b.useMemo((()=>({cloudProvider:"tencentcloud",regions:n.regions||[],...w(n)})),[]);return b.createElement(s,{application:e,onChange:l,pipeline:t,stage:r,render:e=>b.createElement(q,{...e})})},validateFn:e=>{const t=new C(e);return t.field("credentials","Account").required(),t.field("regions","Regions").required(),t.field("cluster","Cluster").required(),t.validateForm()}});const{useEffect:z,useState:R}=b,{AccountRegionClusterSelector:H}=o;function M({application:e,formik:t,pipeline:n}){const o=t.values,{setFieldValue:s}=t,[C,d]=R([]);z((()=>{var t,n,r,a,i,c,C;l.listAccounts("tencentcloud").then((e=>{d(e)})),o.isNew&&(null==(t=null==e?void 0:e.attributes)?void 0:t.platformHealthOnlyShowOverride)&&(null==(n=null==e?void 0:e.attributes)?void 0:n.platformHealthOnly)&&s("interestingHealthProviderNames",["Tencentcloud"]),!o.credentials&&(null==(r=null==e?void 0:e.defaultCredentials)?void 0:r.tencentcloud)&&s("credentials",null==(a=null==e?void 0:e.defaultCredentials)?void 0:a.tencentcloud),!(null==(i=null==o?void 0:o.regions)?void 0:i.length)&&(null==(c=null==e?void 0:e.defaultRegions)?void 0:c.tencentcloud)&&s("regions",[...o.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===o.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===o.preferLargerOverNewer&&s("preferLargerOverNewer","false")}),[]);return b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(H,{application:e,clusterField:"cluster",component:o,accounts:C}),b.createElement(r,{label:"ScaleDown Options"},b.createElement("div",{className:"form-inline"},"Keep the",b.createElement(a,{name:"remainingEnabledServerGroups",required:!0,input:e=>b.createElement(i,{...e,min:0})}),b.createElement(a,{name:"preferLargerOverNewer",required:!0,input:e=>b.createElement(c,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),(p="server group",1===o.remainingFullSizeServerGroups?p:p+"s")," at current size.",b.createElement("p",null,"The remaining server groups will be scaled down to zero instances."))),b.createElement("div",{className:"form-group"},b.createElement(a,{name:"allowScaleDownActive",input:e=>b.createElement(u,{...e,text:"Allow scale down of active server groups"})})));var p}d.pipeline.registerStage({provides:"scaleDownCluster",key:"scaleDownCluster",cloudProvider:"tencentcloud",component:function({application:e,pipeline:t,stage:n,updateStage:l}){const r=b.useMemo((()=>({cloudProvider:"tencentcloud",regions:n.regions||[],...w(n)})),[]);return b.createElement(s,{application:e,onChange:l,pipeline:t,stage:r,render:e=>b.createElement(M,{...e})})},validateFn:e=>{const t=new C(e);return t.field("credentials","Account").required(),t.field("regions","Regions").required(),t.field("cluster","Cluster").required(),t.validateForm()}});const{useEffect:P,useState:L}=b,{AccountRegionClusterSelector:G}=o;function V({application:e,formik:t,pipeline:n}){const o=t.values,{setFieldValue:s}=t,[C,d]=L([]);P((()=>{var t,n,r,a,i,c,C;l.listAccounts("tencentcloud").then((e=>{d(e)})),o.isNew&&(null==(t=null==e?void 0:e.attributes)?void 0:t.platformHealthOnlyShowOverride)&&(null==(n=null==e?void 0:e.attributes)?void 0:n.platformHealthOnly)&&s("interestingHealthProviderNames",["Tencentcloud"]),!o.credentials&&(null==(r=null==e?void 0:e.defaultCredentials)?void 0:r.tencentcloud)&&s("credentials",null==(a=null==e?void 0:e.defaultCredentials)?void 0:a.tencentcloud),!(null==(i=null==o?void 0:o.regions)?void 0:i.length)&&(null==(c=null==e?void 0:e.defaultRegions)?void 0:c.tencentcloud)&&s("regions",[...o.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===o.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===o.preferLargerOverNewer&&s("preferLargerOverNewer","false")}),[]);const p=function(e,t){return 1===t?e:e+"s"};return b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(G,{application:e,clusterField:"cluster",component:o,accounts:C}),b.createElement(r,{label:"Shrink Options"},b.createElement("div",{className:"form-inline"},"Shrink to",b.createElement(a,{name:"remainingEnabledServerGroups",required:!0,input:e=>b.createElement(i,{...e,min:0})}),p("server group",o.shrinkToSize),", keeping the",b.createElement(a,{name:"retainLargerOverNewer",required:!0,input:e=>b.createElement(c,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),p("server group",o.remainingEnabledServerGroups)," enabled.")),b.createElement("div",{className:"form-group"},b.createElement("div",{className:"col-md-offset-3 col-md-6 checkbox"},b.createElement(a,{name:"allowDeleteActive",input:e=>b.createElement(u,{...e,text:"Allow deletion of active server groups"})}))))}d.pipeline.registerStage({provides:"shrinkCluster",key:"shrinkCluster",cloudProvider:"tencentcloud",component:function({application:e,pipeline:t,stage:n,updateStage:l}){const r=b.useMemo((()=>({cloudProvider:"tencentcloud",regions:n.regions||[],...w(n)})),[]);return b.createElement(s,{application:e,onChange:l,pipeline:t,stage:r,render:e=>b.createElement(V,{...e})})},validateFn:e=>{const t=new C(e);return t.field("credentials","Account").required(),t.field("regions","Regions").required(),t.field("cluster","Cluster").required(),t.validateForm()}});const B=new class extends p{constructor(){super(...arguments),this.$injectorProxy={}}initialize(e){const t=e,n=this.$injectorProxy;Object.keys(e).filter((e=>"function"==typeof t[e])).forEach((e=>n[e]=t[e].bind(t)))}};const T=new class extends p{initialize(e){this.$injector=e}};e("spinnaker.tencentcloud.react",[]).run(["$injector",function(e){T.initialize(e),B.initialize(e)}]);e("spinnaker.tencentcloud.search.searchResultFormatter",[]).factory("tencentcloudSearchResultFormatter",(function(){return{securityGroups:function(e){}}}));v.registerValidator("tencentcloud",new class{validateSpecialCharacters(e,t){/^[a-zA-Z_0-9.]*$/g.test(e)||t.push("Only dot(.) and underscore(_) special characters are allowed.")}validateLoadBalancerCharacters(e,t){(e.includes(".")||e.includes("_"))&&t.push("If the application's name contains an underscore(_) or dot(.),\n you will not be able to create a load balancer,\n preventing it from being used as a front end service.")}validateLength(e,t,n){if(e.length>250)n.push("The maximum length for an application in Tencentcloud is 250 characters.");else{if(e.length>240)if(e.length>=248)t.push(`You will not be able to include a stack or detail field for clusters or ${m.get("firewalls")}.`);else{const n=248-e.length;t.push(`If you plan to include a stack or detail field for clusters, you will only\n have ~${n} characters to do so.`)}if(e.length>20)if(e.length>32)t.push(`You will not be able to create an Tencentcloud load balancer for this application if the\n application's name is longer than 32 characters (currently: ${e.length} characters)`);else if(e.length>=30)t.push(`If you plan to create load balancers for this application, be aware that the character limit\n for load balancer names is 32 (currently: ${e.length} characters). With separators ("-"), you will not\n be able to add a stack and detail field to any load balancer.`);else{const n=30-e.length;t.push(`If you plan to create load balancers for this application, be aware that the character limit\n for load balancer names is 32. You will only have ~${n} characters to add a stack or detail\n field to any load balancer.`)}}}validate(e=""){const t=[],n=[];return e.length&&(this.validateSpecialCharacters(e,n),this.validateLoadBalancerCharacters(e,t),this.validateLength(e,t,n)),{warnings:t,errors:n}}});const $="spinnaker.tencentcloud";e("spinnaker.tencentcloud",["spinnaker.tencentcloud.react","spinnaker.tencentcloud.search.searchResultFormatter"]).config((()=>{g.registerProvider("tencentcloud",{name:"tencentcloud",logo:{path:"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20version%3D%221.1%22%20id%3D%22%E5%9B%BE%E5%B1%82_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%22120px%22%20height%3D%2248px%22%20viewBox%3D%220%200%20120%2048%22%20style%3D%22enable-background%3Anew%200%200%20120%2048%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%20%3Cg%3E%20%20%3Cpath%20d%3D%22M93.829%2C13.731H81.181v1.83h3.808v6.673h-4.364v1.83h4.364v11.19h2.013v-11.19h4.814V35.02h3.802v-1.831h-1.788V13.731z%20%20%20%20M87.002%2C22.234v-6.673h4.814v6.673H87.002z%22%2F%3E%20%20%3Crect%20x%3D%2258.743%22%20y%3D%2230.136%22%20width%3D%229.979%22%20height%3D%221.83%22%2F%3E%20%20%3Cpath%20d%3D%22M51.944%2C26.749c0%2C3.328-0.269%2C5.854-0.823%2C8.093c-0.058%2C0.207%2C0.004%2C0.263%2C0.113%2C0.263c0.038%2C0%2C1.525%2C0%2C1.835%2C0%20%20%20c0.613-3.075%2C0.693-5.626%2C0.703-7.477h2.565v5.69h-1.821c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h3.257V13.777h-6.22V26.749z%20%20%20%20M53.774%2C25.98V21.6h2.563v4.38H53.774z%20M56.337%2C15.607v4.346h-2.563v-4.346H56.337z%22%2F%3E%20%20%3Cpath%20d%3D%22M69.429%2C21.196h2.457v-1.647h-7.16c0.216-0.526%2C0.41-1.091%2C0.588-1.702h6.123V16.2h-1.794%20%20%20c0.299-1.018%2C0.651-2.219%2C0.672-2.288c0.036-0.122-0.028-0.169-0.107-0.169h-1.558L67.927%2C16.2h-2.202%20%20%20c0.205-0.952%2C0.384-2.007%2C0.547-3.191c0.019-0.137-0.055-0.164-0.146-0.164c-0.073%2C0-1.278%2C0-1.774%2C0%20%20%20c-0.181%2C1.258-0.371%2C2.342-0.614%2C3.355h-1.08l-0.722-2.457h-1.558c-0.079%2C0-0.143%2C0.047-0.107%2C0.169%20%20%20c0.02%2C0.07%2C0.373%2C1.271%2C0.672%2C2.288h-1.747v1.647h4.079c-0.166%2C0.52-0.41%2C1.133-0.67%2C1.702h-3.858v1.647h2.898%20%20%20c-1.168%2C1.659-2.417%2C2.422-2.915%2C2.727c0%2C0.234%2C0%2C1.83%2C0%2C1.884c0%2C0.095%2C0.075%2C0.196%2C0.373%2C0.027%20%20%20c0.542-0.307%2C1.12-0.655%2C1.705-1.087h6.817l-0.058%2C2.467h-5.382l0.082-1.475c0-0.064-0.046-0.111-0.112-0.111%20%20%20c-0.102%2C0-1.721%2C0-1.721%2C0l-0.173%2C3.122c0%2C0.064%2C0.046%2C0.111%2C0.112%2C0.111c0.102%2C0%2C9.285%2C0%2C9.285%2C0v4.454h-4.185%20%20%20c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h5.807v-7.931h-2.273l0.075-3.203c0.85%2C0.79%2C1.712%2C1.379%2C2.497%2C1.824%20%20%20c0.298%2C0.169%2C0.373%2C0.068%2C0.373-0.027c0-0.054%2C0-1.651%2C0-1.884C71.844%2C23.618%2C70.597%2C22.853%2C69.429%2C21.196z%20M67.188%2C21.196%20%20%20c0.438%2C0.721%2C0.91%2C1.351%2C1.398%2C1.903h-5.991c0.465-0.537%2C0.915-1.163%2C1.335-1.903H67.188z%22%2F%3E%20%20%3Cpath%20d%3D%22M82.457%2C28.864c-0.034%2C0.026-1.742%2C1.32-3.395%2C2.572V19.538h-4.704v2.013h2.704v11.4%20%20%20c-0.644%2C0.488-1.081%2C0.819-1.081%2C0.819l1.105%2C1.459l5.552-4.207c0%2C0%2C0-2.021%2C0-2.073C82.639%2C28.851%2C82.529%2C28.809%2C82.457%2C28.864z%22%20%20%20%2F%3E%20%20%3Cpath%20d%3D%22M77.329%2C17.736c0%2C0%2C2.15%2C0%2C2.2%2C0c0.098%2C0%2C0.137-0.106%2C0.094-0.171c-0.04-0.061-2.775-4.238-2.775-4.238s-2.117%2C0-2.2%2C0%20%20%20c-0.083%2C0-0.144%2C0.096-0.098%2C0.166C74.596%2C13.562%2C77.329%2C17.736%2C77.329%2C17.736z%22%2F%3E%20%20%3Crect%20x%3D%2299.874%22%20y%3D%2214.22%22%20width%3D%2215.888%22%20height%3D%222.013%22%2F%3E%20%20%3Cpath%20d%3D%22M105.637%2C23.841H118v-2.013H97.636v2.013h5.65c-1.167%2C3.064-4.095%2C10.753-4.115%2C10.809%20%20%20c-0.032%2C0.089%2C0.026%2C0.155%2C0.104%2C0.155c0.049%2C0%2C17.523%2C0%2C17.564%2C0c0.083%2C0%2C0.131-0.082%2C0.101-0.16%20%20%20c-0.019-0.049-2.619-6.885-2.619-6.885s-2.103%2C0-2.186%2C0s-0.133%2C0.08-0.105%2C0.153c0.028%2C0.073%2C1.853%2C4.879%2C1.853%2C4.879h-11.646%20%20%20L105.637%2C23.841z%22%2F%3E%20%3C%2Fg%3E%20%3Cg%3E%20%20%3Cpath%20style%3D%22fill%3A%2300A3FF%3B%22%20d%3D%22M39.157%2C33.89c-0.764%2C0.756-2.125%2C1.613-4.361%2C1.689c-1.034%2C0.035-2.241%2C0.039-2.793%2C0.039%20%20%20c-0.603%2C0-5.918%2C0-12.012%2C0c4.37-4.245%2C8.182-7.947%2C8.615-8.367c0.396-0.385%2C1.287-1.237%2C2.056-1.929%20%20%20c1.687-1.519%2C3.206-1.825%2C4.28-1.815c1.683%2C0.016%2C3.214%2C0.703%2C4.308%2C1.813C41.591%2C27.712%2C41.535%2C31.536%2C39.157%2C33.89%20%20%20%20M42.034%2C22.597c-1.795-1.83-4.296-2.983-7.077-2.984c-2.404%2C0-4.474%2C0.829-6.281%2C2.3c-0.788%2C0.641-1.614%2C1.409-2.653%2C2.419%20%20%20c-0.516%2C0.501-15.485%2C15.026-15.485%2C15.026c0.785%2C0.112%2C1.864%2C0.145%2C2.826%2C0.151c0.902%2C0.006%2C18.1%2C0.004%2C18.82%2C0.004%20%20%20c1.449%2C0%2C2.392-0.002%2C3.405-0.076c2.323-0.17%2C4.518-1.022%2C6.292-2.764C45.82%2C32.805%2C45.879%2C26.526%2C42.034%2C22.597z%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%2300C8DC%3B%22%20d%3D%22M17.883%2C21.663c-1.76-1.317-3.729-2.053-5.963-2.05c-2.781%2C0-5.283%2C1.153-7.077%2C2.984%20%20%20c-3.845%2C3.93-3.786%2C10.209%2C0.154%2C14.077c1.582%2C1.553%2C3.498%2C2.398%2C5.541%2C2.684l3.854-3.74c-0.623-0.003-1.518-0.011-2.311-0.038%20%20%20c-2.235-0.076-3.597-0.934-4.361-1.689c-2.379-2.354-2.434-6.178-0.094-8.57c1.094-1.11%2C2.625-1.797%2C4.308-1.813%20%20%20c1.055-0.004%2C2.486%2C0.302%2C4.103%2C1.643c0.772%2C0.64%2C2.486%2C2.147%2C3.239%2C2.825c0.038%2C0.035%2C0.084%2C0.038%2C0.129%2C0.001l2.654-2.589%20%20%20c0.046-0.045%2C0.043-0.105-0.002-0.146C20.781%2C24.088%2C18.972%2C22.474%2C17.883%2C21.663%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%23006EFF%3B%22%20d%3D%22M36%2C17.365c-1.831-5.172-6.762-8.879-12.562-8.879c-6.652%2C0-12.165%2C4.892-13.164%2C11.264%20%20%20c0.535-0.09%2C1.085-0.138%2C1.646-0.138c0.781-0.001%2C1.529%2C0.09%2C2.248%2C0.263c0.014%2C0.003%2C0.028%2C0.005%2C0.042%2C0.008%20%20%20c0.901-4.302%2C4.705-7.498%2C9.228-7.498c3.767%2C0%2C7.072%2C2.272%2C8.562%2C5.492c0.023%2C0.051%2C0.063%2C0.067%2C0.104%2C0.056%20%20%20c1.121-0.308%2C2.464-0.487%2C3.762-0.391C35.992%2C17.552%2C36.04%2C17.481%2C36%2C17.365%22%2F%3E%20%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E"},image:{reader:y}})})),h.registerProvider("tencentcloud",["custom","redblack","rollingpush","rollingredblack"]);const j=f.providers.tencentcloud||{defaults:{}};j&&(j.resetToOriginal=f.resetProvider("tencentcloud"));export{$ as TENCENTCLOUD_MODULE,j as TencentcloudProviderSettings};
|
|
1
|
+
import { module } from 'angular';
|
|
2
|
+
import { HelpContentsRegistry, REST, AccountService, StageConfigField, FormikFormField, NumberInput, SelectInput, NgReact, FormikStageConfig, FormValidator, Registry, CheckboxInput, ReactInject, ApplicationNameValidator, FirewallLabels, CloudProviderRegistry, DeploymentStrategyRegistry, SETTINGS } from '@spinnaker/core';
|
|
3
|
+
import { $q } from 'ngimport';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import { cloneDeep } from 'lodash';
|
|
6
|
+
|
|
7
|
+
const helpContents = {};
|
|
8
|
+
Object.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));
|
|
9
|
+
|
|
10
|
+
class TencentcloudImageReader {
|
|
11
|
+
findImages(params) {
|
|
12
|
+
if (!params.q || params.q.length < 3) {
|
|
13
|
+
return $q.when([{ message: "Please enter at least 3 characters...", disabled: true }]);
|
|
14
|
+
}
|
|
15
|
+
return REST("/images/find").query({ ...params, provider: "tencentcloud" }).get().catch(() => []);
|
|
16
|
+
}
|
|
17
|
+
getImage(name, region, credentials) {
|
|
18
|
+
return REST("/images").path(credentials, region, name).query({ provider: "tencentcloud" }).get().then((results) => results && results.length ? results[0] : null).catch(() => null);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var logo = "data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20version%3D%221.1%22%20id%3D%22%E5%9B%BE%E5%B1%82_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%22120px%22%20height%3D%2248px%22%20viewBox%3D%220%200%20120%2048%22%20style%3D%22enable-background%3Anew%200%200%20120%2048%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%20%3Cg%3E%20%20%3Cpath%20d%3D%22M93.829%2C13.731H81.181v1.83h3.808v6.673h-4.364v1.83h4.364v11.19h2.013v-11.19h4.814V35.02h3.802v-1.831h-1.788V13.731z%20%20%20%20M87.002%2C22.234v-6.673h4.814v6.673H87.002z%22%2F%3E%20%20%3Crect%20x%3D%2258.743%22%20y%3D%2230.136%22%20width%3D%229.979%22%20height%3D%221.83%22%2F%3E%20%20%3Cpath%20d%3D%22M51.944%2C26.749c0%2C3.328-0.269%2C5.854-0.823%2C8.093c-0.058%2C0.207%2C0.004%2C0.263%2C0.113%2C0.263c0.038%2C0%2C1.525%2C0%2C1.835%2C0%20%20%20c0.613-3.075%2C0.693-5.626%2C0.703-7.477h2.565v5.69h-1.821c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h3.257V13.777h-6.22V26.749z%20%20%20%20M53.774%2C25.98V21.6h2.563v4.38H53.774z%20M56.337%2C15.607v4.346h-2.563v-4.346H56.337z%22%2F%3E%20%20%3Cpath%20d%3D%22M69.429%2C21.196h2.457v-1.647h-7.16c0.216-0.526%2C0.41-1.091%2C0.588-1.702h6.123V16.2h-1.794%20%20%20c0.299-1.018%2C0.651-2.219%2C0.672-2.288c0.036-0.122-0.028-0.169-0.107-0.169h-1.558L67.927%2C16.2h-2.202%20%20%20c0.205-0.952%2C0.384-2.007%2C0.547-3.191c0.019-0.137-0.055-0.164-0.146-0.164c-0.073%2C0-1.278%2C0-1.774%2C0%20%20%20c-0.181%2C1.258-0.371%2C2.342-0.614%2C3.355h-1.08l-0.722-2.457h-1.558c-0.079%2C0-0.143%2C0.047-0.107%2C0.169%20%20%20c0.02%2C0.07%2C0.373%2C1.271%2C0.672%2C2.288h-1.747v1.647h4.079c-0.166%2C0.52-0.41%2C1.133-0.67%2C1.702h-3.858v1.647h2.898%20%20%20c-1.168%2C1.659-2.417%2C2.422-2.915%2C2.727c0%2C0.234%2C0%2C1.83%2C0%2C1.884c0%2C0.095%2C0.075%2C0.196%2C0.373%2C0.027%20%20%20c0.542-0.307%2C1.12-0.655%2C1.705-1.087h6.817l-0.058%2C2.467h-5.382l0.082-1.475c0-0.064-0.046-0.111-0.112-0.111%20%20%20c-0.102%2C0-1.721%2C0-1.721%2C0l-0.173%2C3.122c0%2C0.064%2C0.046%2C0.111%2C0.112%2C0.111c0.102%2C0%2C9.285%2C0%2C9.285%2C0v4.454h-4.185%20%20%20c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h5.807v-7.931h-2.273l0.075-3.203c0.85%2C0.79%2C1.712%2C1.379%2C2.497%2C1.824%20%20%20c0.298%2C0.169%2C0.373%2C0.068%2C0.373-0.027c0-0.054%2C0-1.651%2C0-1.884C71.844%2C23.618%2C70.597%2C22.853%2C69.429%2C21.196z%20M67.188%2C21.196%20%20%20c0.438%2C0.721%2C0.91%2C1.351%2C1.398%2C1.903h-5.991c0.465-0.537%2C0.915-1.163%2C1.335-1.903H67.188z%22%2F%3E%20%20%3Cpath%20d%3D%22M82.457%2C28.864c-0.034%2C0.026-1.742%2C1.32-3.395%2C2.572V19.538h-4.704v2.013h2.704v11.4%20%20%20c-0.644%2C0.488-1.081%2C0.819-1.081%2C0.819l1.105%2C1.459l5.552-4.207c0%2C0%2C0-2.021%2C0-2.073C82.639%2C28.851%2C82.529%2C28.809%2C82.457%2C28.864z%22%20%20%20%2F%3E%20%20%3Cpath%20d%3D%22M77.329%2C17.736c0%2C0%2C2.15%2C0%2C2.2%2C0c0.098%2C0%2C0.137-0.106%2C0.094-0.171c-0.04-0.061-2.775-4.238-2.775-4.238s-2.117%2C0-2.2%2C0%20%20%20c-0.083%2C0-0.144%2C0.096-0.098%2C0.166C74.596%2C13.562%2C77.329%2C17.736%2C77.329%2C17.736z%22%2F%3E%20%20%3Crect%20x%3D%2299.874%22%20y%3D%2214.22%22%20width%3D%2215.888%22%20height%3D%222.013%22%2F%3E%20%20%3Cpath%20d%3D%22M105.637%2C23.841H118v-2.013H97.636v2.013h5.65c-1.167%2C3.064-4.095%2C10.753-4.115%2C10.809%20%20%20c-0.032%2C0.089%2C0.026%2C0.155%2C0.104%2C0.155c0.049%2C0%2C17.523%2C0%2C17.564%2C0c0.083%2C0%2C0.131-0.082%2C0.101-0.16%20%20%20c-0.019-0.049-2.619-6.885-2.619-6.885s-2.103%2C0-2.186%2C0s-0.133%2C0.08-0.105%2C0.153c0.028%2C0.073%2C1.853%2C4.879%2C1.853%2C4.879h-11.646%20%20%20L105.637%2C23.841z%22%2F%3E%20%3C%2Fg%3E%20%3Cg%3E%20%20%3Cpath%20style%3D%22fill%3A%2300A3FF%3B%22%20d%3D%22M39.157%2C33.89c-0.764%2C0.756-2.125%2C1.613-4.361%2C1.689c-1.034%2C0.035-2.241%2C0.039-2.793%2C0.039%20%20%20c-0.603%2C0-5.918%2C0-12.012%2C0c4.37-4.245%2C8.182-7.947%2C8.615-8.367c0.396-0.385%2C1.287-1.237%2C2.056-1.929%20%20%20c1.687-1.519%2C3.206-1.825%2C4.28-1.815c1.683%2C0.016%2C3.214%2C0.703%2C4.308%2C1.813C41.591%2C27.712%2C41.535%2C31.536%2C39.157%2C33.89%20%20%20%20M42.034%2C22.597c-1.795-1.83-4.296-2.983-7.077-2.984c-2.404%2C0-4.474%2C0.829-6.281%2C2.3c-0.788%2C0.641-1.614%2C1.409-2.653%2C2.419%20%20%20c-0.516%2C0.501-15.485%2C15.026-15.485%2C15.026c0.785%2C0.112%2C1.864%2C0.145%2C2.826%2C0.151c0.902%2C0.006%2C18.1%2C0.004%2C18.82%2C0.004%20%20%20c1.449%2C0%2C2.392-0.002%2C3.405-0.076c2.323-0.17%2C4.518-1.022%2C6.292-2.764C45.82%2C32.805%2C45.879%2C26.526%2C42.034%2C22.597z%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%2300C8DC%3B%22%20d%3D%22M17.883%2C21.663c-1.76-1.317-3.729-2.053-5.963-2.05c-2.781%2C0-5.283%2C1.153-7.077%2C2.984%20%20%20c-3.845%2C3.93-3.786%2C10.209%2C0.154%2C14.077c1.582%2C1.553%2C3.498%2C2.398%2C5.541%2C2.684l3.854-3.74c-0.623-0.003-1.518-0.011-2.311-0.038%20%20%20c-2.235-0.076-3.597-0.934-4.361-1.689c-2.379-2.354-2.434-6.178-0.094-8.57c1.094-1.11%2C2.625-1.797%2C4.308-1.813%20%20%20c1.055-0.004%2C2.486%2C0.302%2C4.103%2C1.643c0.772%2C0.64%2C2.486%2C2.147%2C3.239%2C2.825c0.038%2C0.035%2C0.084%2C0.038%2C0.129%2C0.001l2.654-2.589%20%20%20c0.046-0.045%2C0.043-0.105-0.002-0.146C20.781%2C24.088%2C18.972%2C22.474%2C17.883%2C21.663%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%23006EFF%3B%22%20d%3D%22M36%2C17.365c-1.831-5.172-6.762-8.879-12.562-8.879c-6.652%2C0-12.165%2C4.892-13.164%2C11.264%20%20%20c0.535-0.09%2C1.085-0.138%2C1.646-0.138c0.781-0.001%2C1.529%2C0.09%2C2.248%2C0.263c0.014%2C0.003%2C0.028%2C0.005%2C0.042%2C0.008%20%20%20c0.901-4.302%2C4.705-7.498%2C9.228-7.498c3.767%2C0%2C7.072%2C2.272%2C8.562%2C5.492c0.023%2C0.051%2C0.063%2C0.067%2C0.104%2C0.056%20%20%20c1.121-0.308%2C2.464-0.487%2C3.762-0.391C35.992%2C17.552%2C36.04%2C17.481%2C36%2C17.365%22%2F%3E%20%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E";
|
|
23
|
+
|
|
24
|
+
const { useEffect: useEffect$3, useState: useState$3 } = React;
|
|
25
|
+
const { AccountRegionClusterSelector: AccountRegionClusterSelector$3 } = NgReact;
|
|
26
|
+
function DisableClusterStageForm({ application, formik, pipeline }) {
|
|
27
|
+
const stage = formik.values;
|
|
28
|
+
const { setFieldValue } = formik;
|
|
29
|
+
const [accounts, setAccounts] = useState$3([]);
|
|
30
|
+
useEffect$3(() => {
|
|
31
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
32
|
+
AccountService.listAccounts("tencentcloud").then((accounts2) => {
|
|
33
|
+
setAccounts(accounts2);
|
|
34
|
+
});
|
|
35
|
+
if (stage.isNew && ((_a = application == null ? void 0 : application.attributes) == null ? void 0 : _a.platformHealthOnlyShowOverride) && ((_b = application == null ? void 0 : application.attributes) == null ? void 0 : _b.platformHealthOnly)) {
|
|
36
|
+
setFieldValue("interestingHealthProviderNames", ["Tencentcloud"]);
|
|
37
|
+
}
|
|
38
|
+
if (!stage.credentials && ((_c = application == null ? void 0 : application.defaultCredentials) == null ? void 0 : _c.tencentcloud)) {
|
|
39
|
+
setFieldValue("credentials", (_d = application == null ? void 0 : application.defaultCredentials) == null ? void 0 : _d.tencentcloud);
|
|
40
|
+
}
|
|
41
|
+
if (!((_e = stage == null ? void 0 : stage.regions) == null ? void 0 : _e.length) && ((_f = application == null ? void 0 : application.defaultRegions) == null ? void 0 : _f.tencentcloud)) {
|
|
42
|
+
setFieldValue("regions", [...stage.regions, (_g = application == null ? void 0 : application.defaultRegions) == null ? void 0 : _g.tencentcloud]);
|
|
43
|
+
}
|
|
44
|
+
if (stage.remainingEnabledServerGroups === void 0) {
|
|
45
|
+
setFieldValue("remainingEnabledServerGroups", 1);
|
|
46
|
+
}
|
|
47
|
+
if (stage.preferLargerOverNewer === void 0) {
|
|
48
|
+
setFieldValue("preferLargerOverNewer", "false");
|
|
49
|
+
}
|
|
50
|
+
}, []);
|
|
51
|
+
const pluralize = function(str, val) {
|
|
52
|
+
if (val === 1) {
|
|
53
|
+
return str;
|
|
54
|
+
}
|
|
55
|
+
return str + "s";
|
|
56
|
+
};
|
|
57
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
58
|
+
className: "form-horizontal"
|
|
59
|
+
}, !pipeline.strategy && /* @__PURE__ */ React.createElement(AccountRegionClusterSelector$3, {
|
|
60
|
+
application,
|
|
61
|
+
clusterField: "cluster",
|
|
62
|
+
component: stage,
|
|
63
|
+
accounts
|
|
64
|
+
}), /* @__PURE__ */ React.createElement(StageConfigField, {
|
|
65
|
+
label: "Disable Options"
|
|
66
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
67
|
+
className: "form-inline"
|
|
68
|
+
}, "Keep the", /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
69
|
+
name: "remainingEnabledServerGroups",
|
|
70
|
+
required: true,
|
|
71
|
+
input: (props) => /* @__PURE__ */ React.createElement(NumberInput, {
|
|
72
|
+
...props,
|
|
73
|
+
min: 0
|
|
74
|
+
})
|
|
75
|
+
}), /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
76
|
+
name: "preferLargerOverNewer",
|
|
77
|
+
required: true,
|
|
78
|
+
input: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
|
|
79
|
+
options: [
|
|
80
|
+
{ label: "largest", value: "true" },
|
|
81
|
+
{ label: "newest", value: "false" }
|
|
82
|
+
],
|
|
83
|
+
...props
|
|
84
|
+
})
|
|
85
|
+
}), pluralize("server group", stage.remainingEnabledServerGroups), " enabled.")));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function DisableClusterConfig({ application, pipeline, stage, updateStage }) {
|
|
89
|
+
const stageWithDefaults = React.useMemo(() => {
|
|
90
|
+
return {
|
|
91
|
+
cloudProvider: "tencentcloud",
|
|
92
|
+
regions: stage.regions || [],
|
|
93
|
+
...cloneDeep(stage)
|
|
94
|
+
};
|
|
95
|
+
}, []);
|
|
96
|
+
return /* @__PURE__ */ React.createElement(FormikStageConfig, {
|
|
97
|
+
application,
|
|
98
|
+
onChange: updateStage,
|
|
99
|
+
pipeline,
|
|
100
|
+
stage: stageWithDefaults,
|
|
101
|
+
render: (props) => /* @__PURE__ */ React.createElement(DisableClusterStageForm, {
|
|
102
|
+
...props
|
|
103
|
+
})
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
const validate$3 = (stage) => {
|
|
108
|
+
const formValidator = new FormValidator(stage);
|
|
109
|
+
formValidator.field("credentials", "Account").required();
|
|
110
|
+
formValidator.field("regions", "Regions").required();
|
|
111
|
+
formValidator.field("cluster", "Cluster").required();
|
|
112
|
+
return formValidator.validateForm();
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
Registry.pipeline.registerStage({
|
|
116
|
+
provides: "disableCluster",
|
|
117
|
+
key: "disableCluster",
|
|
118
|
+
cloudProvider: "tencentcloud",
|
|
119
|
+
component: DisableClusterConfig,
|
|
120
|
+
validateFn: validate$3
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
const { useEffect: useEffect$2, useState: useState$2 } = React;
|
|
124
|
+
const { AccountRegionClusterSelector: AccountRegionClusterSelector$2 } = NgReact;
|
|
125
|
+
function RollbackClusterStageForm({ application, formik, pipeline }) {
|
|
126
|
+
const stage = formik.values;
|
|
127
|
+
const { setFieldValue } = formik;
|
|
128
|
+
const [accounts, setAccounts] = useState$2([]);
|
|
129
|
+
useEffect$2(() => {
|
|
130
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
131
|
+
AccountService.listAccounts("tencentcloud").then((accounts2) => {
|
|
132
|
+
setAccounts(accounts2);
|
|
133
|
+
});
|
|
134
|
+
if (stage.isNew && ((_a = application == null ? void 0 : application.attributes) == null ? void 0 : _a.platformHealthOnlyShowOverride) && ((_b = application == null ? void 0 : application.attributes) == null ? void 0 : _b.platformHealthOnly)) {
|
|
135
|
+
setFieldValue("interestingHealthProviderNames", ["Tencentcloud"]);
|
|
136
|
+
}
|
|
137
|
+
if (!stage.credentials && ((_c = application == null ? void 0 : application.defaultCredentials) == null ? void 0 : _c.tencentcloud)) {
|
|
138
|
+
setFieldValue("credentials", (_d = application == null ? void 0 : application.defaultCredentials) == null ? void 0 : _d.tencentcloud);
|
|
139
|
+
}
|
|
140
|
+
if (!((_e = stage == null ? void 0 : stage.regions) == null ? void 0 : _e.length) && ((_f = application == null ? void 0 : application.defaultRegions) == null ? void 0 : _f.tencentcloud)) {
|
|
141
|
+
setFieldValue("regions", [...stage.regions, (_g = application == null ? void 0 : application.defaultRegions) == null ? void 0 : _g.tencentcloud]);
|
|
142
|
+
}
|
|
143
|
+
if (stage.remainingEnabledServerGroups === void 0) {
|
|
144
|
+
setFieldValue("remainingEnabledServerGroups", 1);
|
|
145
|
+
}
|
|
146
|
+
if (stage.preferLargerOverNewer === void 0) {
|
|
147
|
+
setFieldValue("preferLargerOverNewer", "false");
|
|
148
|
+
}
|
|
149
|
+
}, []);
|
|
150
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
151
|
+
className: "form-horizontal"
|
|
152
|
+
}, !pipeline.strategy && /* @__PURE__ */ React.createElement(AccountRegionClusterSelector$2, {
|
|
153
|
+
application,
|
|
154
|
+
clusterField: "cluster",
|
|
155
|
+
component: stage,
|
|
156
|
+
accounts
|
|
157
|
+
}), /* @__PURE__ */ React.createElement(StageConfigField, {
|
|
158
|
+
label: "Rollback Options"
|
|
159
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
160
|
+
className: "row"
|
|
161
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
162
|
+
className: "col-sm-10 col-sm-offset-2"
|
|
163
|
+
}, "Wait", /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
164
|
+
name: "wait",
|
|
165
|
+
required: true,
|
|
166
|
+
input: (props) => /* @__PURE__ */ React.createElement(NumberInput, {
|
|
167
|
+
...props,
|
|
168
|
+
min: 0
|
|
169
|
+
})
|
|
170
|
+
}), "seconds between regional rollbacks."), /* @__PURE__ */ React.createElement("div", {
|
|
171
|
+
className: "col-sm-10 col-sm-offset-2"
|
|
172
|
+
}, "Consider rollback successful when", /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
173
|
+
name: "remainingEnabledServerGroups",
|
|
174
|
+
required: true,
|
|
175
|
+
input: (props) => /* @__PURE__ */ React.createElement(NumberInput, {
|
|
176
|
+
...props,
|
|
177
|
+
min: 0,
|
|
178
|
+
max: 100
|
|
179
|
+
})
|
|
180
|
+
}), "percent of instances are healthy."))));
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
function RollbackClusterConfig({ application, pipeline, stage, updateStage }) {
|
|
184
|
+
const stageWithDefaults = React.useMemo(() => {
|
|
185
|
+
return {
|
|
186
|
+
cloudProvider: "tencentcloud",
|
|
187
|
+
regions: stage.regions || [],
|
|
188
|
+
...cloneDeep(stage)
|
|
189
|
+
};
|
|
190
|
+
}, []);
|
|
191
|
+
return /* @__PURE__ */ React.createElement(FormikStageConfig, {
|
|
192
|
+
application,
|
|
193
|
+
onChange: updateStage,
|
|
194
|
+
pipeline,
|
|
195
|
+
stage: stageWithDefaults,
|
|
196
|
+
render: (props) => /* @__PURE__ */ React.createElement(RollbackClusterStageForm, {
|
|
197
|
+
...props
|
|
198
|
+
})
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
const validate$2 = (stage) => {
|
|
203
|
+
const formValidator = new FormValidator(stage);
|
|
204
|
+
formValidator.field("credentials", "Account").required();
|
|
205
|
+
formValidator.field("regions", "Regions").required();
|
|
206
|
+
formValidator.field("cluster", "Cluster").required();
|
|
207
|
+
return formValidator.validateForm();
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
Registry.pipeline.registerStage({
|
|
211
|
+
provides: "rollbackCluster",
|
|
212
|
+
key: "rollbackCluster",
|
|
213
|
+
cloudProvider: "tencentcloud",
|
|
214
|
+
component: RollbackClusterConfig,
|
|
215
|
+
validateFn: validate$2
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
const { useEffect: useEffect$1, useState: useState$1 } = React;
|
|
219
|
+
const { AccountRegionClusterSelector: AccountRegionClusterSelector$1 } = NgReact;
|
|
220
|
+
function ScaleDownClusterStageForm({ application, formik, pipeline }) {
|
|
221
|
+
const stage = formik.values;
|
|
222
|
+
const { setFieldValue } = formik;
|
|
223
|
+
const [accounts, setAccounts] = useState$1([]);
|
|
224
|
+
useEffect$1(() => {
|
|
225
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
226
|
+
AccountService.listAccounts("tencentcloud").then((accounts2) => {
|
|
227
|
+
setAccounts(accounts2);
|
|
228
|
+
});
|
|
229
|
+
if (stage.isNew && ((_a = application == null ? void 0 : application.attributes) == null ? void 0 : _a.platformHealthOnlyShowOverride) && ((_b = application == null ? void 0 : application.attributes) == null ? void 0 : _b.platformHealthOnly)) {
|
|
230
|
+
setFieldValue("interestingHealthProviderNames", ["Tencentcloud"]);
|
|
231
|
+
}
|
|
232
|
+
if (!stage.credentials && ((_c = application == null ? void 0 : application.defaultCredentials) == null ? void 0 : _c.tencentcloud)) {
|
|
233
|
+
setFieldValue("credentials", (_d = application == null ? void 0 : application.defaultCredentials) == null ? void 0 : _d.tencentcloud);
|
|
234
|
+
}
|
|
235
|
+
if (!((_e = stage == null ? void 0 : stage.regions) == null ? void 0 : _e.length) && ((_f = application == null ? void 0 : application.defaultRegions) == null ? void 0 : _f.tencentcloud)) {
|
|
236
|
+
setFieldValue("regions", [...stage.regions, (_g = application == null ? void 0 : application.defaultRegions) == null ? void 0 : _g.tencentcloud]);
|
|
237
|
+
}
|
|
238
|
+
if (stage.remainingEnabledServerGroups === void 0) {
|
|
239
|
+
setFieldValue("remainingEnabledServerGroups", 1);
|
|
240
|
+
}
|
|
241
|
+
if (stage.preferLargerOverNewer === void 0) {
|
|
242
|
+
setFieldValue("preferLargerOverNewer", "false");
|
|
243
|
+
}
|
|
244
|
+
}, []);
|
|
245
|
+
const pluralize = function(str, val) {
|
|
246
|
+
if (val === 1) {
|
|
247
|
+
return str;
|
|
248
|
+
}
|
|
249
|
+
return str + "s";
|
|
250
|
+
};
|
|
251
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
252
|
+
className: "form-horizontal"
|
|
253
|
+
}, !pipeline.strategy && /* @__PURE__ */ React.createElement(AccountRegionClusterSelector$1, {
|
|
254
|
+
application,
|
|
255
|
+
clusterField: "cluster",
|
|
256
|
+
component: stage,
|
|
257
|
+
accounts
|
|
258
|
+
}), /* @__PURE__ */ React.createElement(StageConfigField, {
|
|
259
|
+
label: "ScaleDown Options"
|
|
260
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
261
|
+
className: "form-inline"
|
|
262
|
+
}, "Keep the", /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
263
|
+
name: "remainingEnabledServerGroups",
|
|
264
|
+
required: true,
|
|
265
|
+
input: (props) => /* @__PURE__ */ React.createElement(NumberInput, {
|
|
266
|
+
...props,
|
|
267
|
+
min: 0
|
|
268
|
+
})
|
|
269
|
+
}), /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
270
|
+
name: "preferLargerOverNewer",
|
|
271
|
+
required: true,
|
|
272
|
+
input: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
|
|
273
|
+
options: [
|
|
274
|
+
{ label: "largest", value: "true" },
|
|
275
|
+
{ label: "newest", value: "false" }
|
|
276
|
+
],
|
|
277
|
+
...props
|
|
278
|
+
})
|
|
279
|
+
}), pluralize("server group", stage.remainingFullSizeServerGroups), " at current size.", /* @__PURE__ */ React.createElement("p", null, "The remaining server groups will be scaled down to zero instances."))), /* @__PURE__ */ React.createElement("div", {
|
|
280
|
+
className: "form-group"
|
|
281
|
+
}, /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
282
|
+
name: "allowScaleDownActive",
|
|
283
|
+
input: (props) => /* @__PURE__ */ React.createElement(CheckboxInput, {
|
|
284
|
+
...props,
|
|
285
|
+
text: "Allow scale down of active server groups"
|
|
286
|
+
})
|
|
287
|
+
})));
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
function ScaleDownClusterConfig({ application, pipeline, stage, updateStage }) {
|
|
291
|
+
const stageWithDefaults = React.useMemo(() => {
|
|
292
|
+
return {
|
|
293
|
+
cloudProvider: "tencentcloud",
|
|
294
|
+
regions: stage.regions || [],
|
|
295
|
+
...cloneDeep(stage)
|
|
296
|
+
};
|
|
297
|
+
}, []);
|
|
298
|
+
return /* @__PURE__ */ React.createElement(FormikStageConfig, {
|
|
299
|
+
application,
|
|
300
|
+
onChange: updateStage,
|
|
301
|
+
pipeline,
|
|
302
|
+
stage: stageWithDefaults,
|
|
303
|
+
render: (props) => /* @__PURE__ */ React.createElement(ScaleDownClusterStageForm, {
|
|
304
|
+
...props
|
|
305
|
+
})
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
const validate$1 = (stage) => {
|
|
310
|
+
const formValidator = new FormValidator(stage);
|
|
311
|
+
formValidator.field("credentials", "Account").required();
|
|
312
|
+
formValidator.field("regions", "Regions").required();
|
|
313
|
+
formValidator.field("cluster", "Cluster").required();
|
|
314
|
+
return formValidator.validateForm();
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
Registry.pipeline.registerStage({
|
|
318
|
+
provides: "scaleDownCluster",
|
|
319
|
+
key: "scaleDownCluster",
|
|
320
|
+
cloudProvider: "tencentcloud",
|
|
321
|
+
component: ScaleDownClusterConfig,
|
|
322
|
+
validateFn: validate$1
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
const { useEffect, useState } = React;
|
|
326
|
+
const { AccountRegionClusterSelector } = NgReact;
|
|
327
|
+
function ShrinkClusterStageForm({ application, formik, pipeline }) {
|
|
328
|
+
const stage = formik.values;
|
|
329
|
+
const { setFieldValue } = formik;
|
|
330
|
+
const [accounts, setAccounts] = useState([]);
|
|
331
|
+
useEffect(() => {
|
|
332
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
333
|
+
AccountService.listAccounts("tencentcloud").then((accounts2) => {
|
|
334
|
+
setAccounts(accounts2);
|
|
335
|
+
});
|
|
336
|
+
if (stage.isNew && ((_a = application == null ? void 0 : application.attributes) == null ? void 0 : _a.platformHealthOnlyShowOverride) && ((_b = application == null ? void 0 : application.attributes) == null ? void 0 : _b.platformHealthOnly)) {
|
|
337
|
+
setFieldValue("interestingHealthProviderNames", ["Tencentcloud"]);
|
|
338
|
+
}
|
|
339
|
+
if (!stage.credentials && ((_c = application == null ? void 0 : application.defaultCredentials) == null ? void 0 : _c.tencentcloud)) {
|
|
340
|
+
setFieldValue("credentials", (_d = application == null ? void 0 : application.defaultCredentials) == null ? void 0 : _d.tencentcloud);
|
|
341
|
+
}
|
|
342
|
+
if (!((_e = stage == null ? void 0 : stage.regions) == null ? void 0 : _e.length) && ((_f = application == null ? void 0 : application.defaultRegions) == null ? void 0 : _f.tencentcloud)) {
|
|
343
|
+
setFieldValue("regions", [...stage.regions, (_g = application == null ? void 0 : application.defaultRegions) == null ? void 0 : _g.tencentcloud]);
|
|
344
|
+
}
|
|
345
|
+
if (stage.remainingEnabledServerGroups === void 0) {
|
|
346
|
+
setFieldValue("remainingEnabledServerGroups", 1);
|
|
347
|
+
}
|
|
348
|
+
if (stage.preferLargerOverNewer === void 0) {
|
|
349
|
+
setFieldValue("preferLargerOverNewer", "false");
|
|
350
|
+
}
|
|
351
|
+
}, []);
|
|
352
|
+
const pluralize = function(str, val) {
|
|
353
|
+
if (val === 1) {
|
|
354
|
+
return str;
|
|
355
|
+
}
|
|
356
|
+
return str + "s";
|
|
357
|
+
};
|
|
358
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
359
|
+
className: "form-horizontal"
|
|
360
|
+
}, !pipeline.strategy && /* @__PURE__ */ React.createElement(AccountRegionClusterSelector, {
|
|
361
|
+
application,
|
|
362
|
+
clusterField: "cluster",
|
|
363
|
+
component: stage,
|
|
364
|
+
accounts
|
|
365
|
+
}), /* @__PURE__ */ React.createElement(StageConfigField, {
|
|
366
|
+
label: "Shrink Options"
|
|
367
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
368
|
+
className: "form-inline"
|
|
369
|
+
}, "Shrink to", /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
370
|
+
name: "remainingEnabledServerGroups",
|
|
371
|
+
required: true,
|
|
372
|
+
input: (props) => /* @__PURE__ */ React.createElement(NumberInput, {
|
|
373
|
+
...props,
|
|
374
|
+
min: 0
|
|
375
|
+
})
|
|
376
|
+
}), pluralize("server group", stage.shrinkToSize), ", keeping the", /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
377
|
+
name: "retainLargerOverNewer",
|
|
378
|
+
required: true,
|
|
379
|
+
input: (props) => /* @__PURE__ */ React.createElement(SelectInput, {
|
|
380
|
+
options: [
|
|
381
|
+
{ label: "largest", value: "true" },
|
|
382
|
+
{ label: "newest", value: "false" }
|
|
383
|
+
],
|
|
384
|
+
...props
|
|
385
|
+
})
|
|
386
|
+
}), pluralize("server group", stage.remainingEnabledServerGroups), " enabled.")), /* @__PURE__ */ React.createElement("div", {
|
|
387
|
+
className: "form-group"
|
|
388
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
389
|
+
className: "col-md-offset-3 col-md-6 checkbox"
|
|
390
|
+
}, /* @__PURE__ */ React.createElement(FormikFormField, {
|
|
391
|
+
name: "allowDeleteActive",
|
|
392
|
+
input: (props) => /* @__PURE__ */ React.createElement(CheckboxInput, {
|
|
393
|
+
...props,
|
|
394
|
+
text: "Allow deletion of active server groups"
|
|
395
|
+
})
|
|
396
|
+
}))));
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
function ShrinkClusterConfig({ application, pipeline, stage, updateStage }) {
|
|
400
|
+
const stageWithDefaults = React.useMemo(() => {
|
|
401
|
+
return {
|
|
402
|
+
cloudProvider: "tencentcloud",
|
|
403
|
+
regions: stage.regions || [],
|
|
404
|
+
...cloneDeep(stage)
|
|
405
|
+
};
|
|
406
|
+
}, []);
|
|
407
|
+
return /* @__PURE__ */ React.createElement(FormikStageConfig, {
|
|
408
|
+
application,
|
|
409
|
+
onChange: updateStage,
|
|
410
|
+
pipeline,
|
|
411
|
+
stage: stageWithDefaults,
|
|
412
|
+
render: (props) => /* @__PURE__ */ React.createElement(ShrinkClusterStageForm, {
|
|
413
|
+
...props
|
|
414
|
+
})
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
const validate = (stage) => {
|
|
419
|
+
const formValidator = new FormValidator(stage);
|
|
420
|
+
formValidator.field("credentials", "Account").required();
|
|
421
|
+
formValidator.field("regions", "Regions").required();
|
|
422
|
+
formValidator.field("cluster", "Cluster").required();
|
|
423
|
+
return formValidator.validateForm();
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
Registry.pipeline.registerStage({
|
|
427
|
+
provides: "shrinkCluster",
|
|
428
|
+
key: "shrinkCluster",
|
|
429
|
+
cloudProvider: "tencentcloud",
|
|
430
|
+
component: ShrinkClusterConfig,
|
|
431
|
+
validateFn: validate
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
class TencentcloudNgReactInjector extends ReactInject {
|
|
435
|
+
constructor() {
|
|
436
|
+
super(...arguments);
|
|
437
|
+
this.$injectorProxy = {};
|
|
438
|
+
}
|
|
439
|
+
initialize($injector) {
|
|
440
|
+
const realInjector = $injector;
|
|
441
|
+
const proxyInjector = this.$injectorProxy;
|
|
442
|
+
Object.keys($injector).filter((key) => typeof realInjector[key] === "function").forEach((key) => proxyInjector[key] = realInjector[key].bind(realInjector));
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
const TencentcloudNgReact = new TencentcloudNgReactInjector();
|
|
446
|
+
|
|
447
|
+
class TencentcloudReactInject extends ReactInject {
|
|
448
|
+
initialize($injector) {
|
|
449
|
+
this.$injector = $injector;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
const TencentcloudReactInjector = new TencentcloudReactInject();
|
|
453
|
+
|
|
454
|
+
const TENCENTCLOUD_REACT_MODULE = "spinnaker.tencentcloud.react";
|
|
455
|
+
module(TENCENTCLOUD_REACT_MODULE, []).run([
|
|
456
|
+
"$injector",
|
|
457
|
+
function($injector) {
|
|
458
|
+
TencentcloudReactInjector.initialize($injector);
|
|
459
|
+
TencentcloudNgReact.initialize($injector);
|
|
460
|
+
}
|
|
461
|
+
]);
|
|
462
|
+
|
|
463
|
+
const TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER = "spinnaker.tencentcloud.search.searchResultFormatter";
|
|
464
|
+
module(TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER, []).factory("tencentcloudSearchResultFormatter", function() {
|
|
465
|
+
return {
|
|
466
|
+
securityGroups: function(entry) {
|
|
467
|
+
}
|
|
468
|
+
};
|
|
469
|
+
});
|
|
470
|
+
|
|
471
|
+
class TencentcloudApplicationNameValidator {
|
|
472
|
+
validateSpecialCharacters(name, errors) {
|
|
473
|
+
const pattern = /^[a-zA-Z_0-9.]*$/g;
|
|
474
|
+
if (!pattern.test(name)) {
|
|
475
|
+
errors.push("Only dot(.) and underscore(_) special characters are allowed.");
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
validateLoadBalancerCharacters(name, warnings) {
|
|
479
|
+
if (name.includes(".") || name.includes("_")) {
|
|
480
|
+
warnings.push(`If the application's name contains an underscore(_) or dot(.),
|
|
481
|
+
you will not be able to create a load balancer,
|
|
482
|
+
preventing it from being used as a front end service.`);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
validateLength(name, warnings, errors) {
|
|
486
|
+
if (name.length > 250) {
|
|
487
|
+
errors.push("The maximum length for an application in Tencentcloud is 250 characters.");
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
if (name.length > 240) {
|
|
491
|
+
if (name.length >= 248) {
|
|
492
|
+
warnings.push(`You will not be able to include a stack or detail field for clusters or ${FirewallLabels.get("firewalls")}.`);
|
|
493
|
+
} else {
|
|
494
|
+
const remaining = 248 - name.length;
|
|
495
|
+
warnings.push(`If you plan to include a stack or detail field for clusters, you will only
|
|
496
|
+
have ~${remaining} characters to do so.`);
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
if (name.length > 20) {
|
|
500
|
+
if (name.length > 32) {
|
|
501
|
+
warnings.push(`You will not be able to create an Tencentcloud load balancer for this application if the
|
|
502
|
+
application's name is longer than 32 characters (currently: ${name.length} characters)`);
|
|
503
|
+
} else {
|
|
504
|
+
if (name.length >= 30) {
|
|
505
|
+
warnings.push(`If you plan to create load balancers for this application, be aware that the character limit
|
|
506
|
+
for load balancer names is 32 (currently: ${name.length} characters). With separators ("-"), you will not
|
|
507
|
+
be able to add a stack and detail field to any load balancer.`);
|
|
508
|
+
} else {
|
|
509
|
+
const remaining = 30 - name.length;
|
|
510
|
+
warnings.push(`If you plan to create load balancers for this application, be aware that the character limit
|
|
511
|
+
for load balancer names is 32. You will only have ~${remaining} characters to add a stack or detail
|
|
512
|
+
field to any load balancer.`);
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
validate(name = "") {
|
|
518
|
+
const warnings = [];
|
|
519
|
+
const errors = [];
|
|
520
|
+
if (name.length) {
|
|
521
|
+
this.validateSpecialCharacters(name, errors);
|
|
522
|
+
this.validateLoadBalancerCharacters(name, warnings);
|
|
523
|
+
this.validateLength(name, warnings, errors);
|
|
524
|
+
}
|
|
525
|
+
return {
|
|
526
|
+
warnings,
|
|
527
|
+
errors
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
ApplicationNameValidator.registerValidator("tencentcloud", new TencentcloudApplicationNameValidator());
|
|
532
|
+
|
|
533
|
+
const TENCENTCLOUD_MODULE = "spinnaker.tencentcloud";
|
|
534
|
+
module(TENCENTCLOUD_MODULE, [TENCENTCLOUD_REACT_MODULE, TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER]).config(() => {
|
|
535
|
+
CloudProviderRegistry.registerProvider("tencentcloud", {
|
|
536
|
+
name: "tencentcloud",
|
|
537
|
+
logo: {
|
|
538
|
+
path: logo
|
|
539
|
+
},
|
|
540
|
+
image: {
|
|
541
|
+
reader: TencentcloudImageReader
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
});
|
|
545
|
+
DeploymentStrategyRegistry.registerProvider("tencentcloud", ["custom", "redblack", "rollingpush", "rollingredblack"]);
|
|
546
|
+
|
|
547
|
+
const TencentcloudProviderSettings = SETTINGS.providers.tencentcloud || { defaults: {} };
|
|
548
|
+
if (TencentcloudProviderSettings) {
|
|
549
|
+
TencentcloudProviderSettings.resetToOriginal = SETTINGS.resetProvider("tencentcloud");
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
export { TENCENTCLOUD_MODULE, TencentcloudProviderSettings };
|
|
2
553
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/help/tencentcloud.help.ts","../src/image/image.reader.ts","../src/pipeline/stages/disableCluster/DisableClusterStageForm.tsx","../src/pipeline/stages/disableCluster/disableClusterStage.ts","../src/pipeline/stages/disableCluster/DisableClusterConfig.tsx","../src/pipeline/stages/disableCluster/disableClusterValidators.ts","../src/pipeline/stages/rollbackCluster/RollbackClusterStageForm.tsx","../src/pipeline/stages/rollbackCluster/rollbackClusterStage.ts","../src/pipeline/stages/rollbackCluster/RollbackClusterConfig.tsx","../src/pipeline/stages/rollbackCluster/rollbackClusterValidators.ts","../src/pipeline/stages/scaleDownCluster/ScaleDownClusterStageForm.tsx","../src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.ts","../src/pipeline/stages/scaleDownCluster/ScaleDownClusterConfig.tsx","../src/pipeline/stages/scaleDownCluster/scaledownClusterValidators.ts","../src/pipeline/stages/shrinkCluster/ShrinkClusterStageForm.tsx","../src/pipeline/stages/shrinkCluster/shrinkClusterStage.ts","../src/pipeline/stages/shrinkCluster/ShrinkClusterConfig.tsx","../src/pipeline/stages/shrinkCluster/shrinkClusterValidators.ts","../src/reactShims/tencentcloud.ngReact.ts","../src/reactShims/tencentcloud.react.injector.ts","../src/reactShims/tencentcloud.react.module.ts","../src/search/searchResultFormatter.js","../src/validation/ApplicationNameValidator.ts","../src/tencentcloud.module.ts","../src/logo/tencentcloud.logo.svg","../src/tencentcloud.settings.ts"],"sourcesContent":["import { HelpContentsRegistry } from '@spinnaker/core';\n\nconst helpContents: { [key: string]: string } = {};\n\nObject.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));\n","import { $q } from 'ngimport';\n\nimport { REST } from '@spinnaker/core';\nexport interface ITencentcloudSnapshot {\n diskSize: string;\n diskType: string;\n diskUsage: 'SYSTEM_DISK' | 'DATA_DISK';\n snapshotId: string;\n}\nexport interface ITencentcloudImage {\n accounts: string[];\n images: {\n [region: string]: string[];\n };\n imgIds: {\n [region: string]: string[];\n };\n attributes: {\n createdTime?: string;\n creationDate?: string;\n snapshotSet?: ITencentcloudSnapshot[];\n osPlatform: string;\n };\n imageName: string;\n tags: {\n [tag: string]: string;\n };\n tagsByImageId: {\n [imageId: string]: ITencentcloudImage['tags'];\n };\n}\n\nexport class TencentcloudImageReader {\n public findImages(params: { q: string; region?: string }): PromiseLike<ITencentcloudImage[]> {\n if (!params.q || params.q.length < 3) {\n return $q.when([{ message: 'Please enter at least 3 characters...', disabled: true }]) as any;\n }\n\n return REST('/images/find')\n .query({ ...params, provider: 'tencentcloud' })\n .get()\n .catch(() => [] as ITencentcloudImage[]);\n }\n\n public getImage(name: string, region: string, credentials: string): PromiseLike<ITencentcloudImage> {\n return REST('/images')\n .path(credentials, region, name)\n .query({ provider: 'tencentcloud' })\n .get()\n .then((results: any[]) => (results && results.length ? results[0] : null))\n .catch(() => null as ITencentcloudImage);\n }\n}\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport { AccountService, FormikFormField, NgReact, NumberInput, SelectInput, StageConfigField } from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function DisableClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Disable Options\">\n <div className=\"form-inline\">\n Keep the\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n <FormikFormField\n name=\"preferLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingEnabledServerGroups)} enabled.\n </div>\n </StageConfigField>\n </div>\n );\n}\n","import { Registry } from '@spinnaker/core';\n\nimport { DisableClusterConfig } from './DisableClusterConfig';\nimport { validate } from './disableClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'disableCluster',\n key: 'disableCluster',\n cloudProvider: 'tencentcloud',\n component: DisableClusterConfig,\n validateFn: validate,\n});\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { DisableClusterStageForm } from './DisableClusterStageForm';\n\nexport function DisableClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <DisableClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport { AccountService, FormikFormField, NgReact, NumberInput, StageConfigField } from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function RollbackClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Rollback Options\">\n <div className=\"row\">\n <div className=\"col-sm-10 col-sm-offset-2\">\n Wait\n <FormikFormField name=\"wait\" required input={(props) => <NumberInput {...props} min={0} />} />\n seconds between regional rollbacks.\n </div>\n <div className=\"col-sm-10 col-sm-offset-2\">\n Consider rollback successful when\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} max={100} />}\n />\n percent of instances are healthy.\n </div>\n </div>\n </StageConfigField>\n </div>\n );\n}\n","import { Registry } from '@spinnaker/core';\n\nimport { RollbackClusterConfig } from './RollbackClusterConfig';\nimport { validate } from './rollbackClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'rollbackCluster',\n key: 'rollbackCluster',\n cloudProvider: 'tencentcloud',\n component: RollbackClusterConfig,\n validateFn: validate,\n});\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { RollbackClusterStageForm } from './RollbackClusterStageForm';\n\nexport function RollbackClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <RollbackClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n NgReact,\n NumberInput,\n SelectInput,\n StageConfigField,\n} from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function ScaleDownClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"ScaleDown Options\">\n <div className=\"form-inline\">\n Keep the\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n <FormikFormField\n name=\"preferLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingFullSizeServerGroups)} at current size.\n <p>The remaining server groups will be scaled down to zero instances.</p>\n </div>\n </StageConfigField>\n <div className=\"form-group\">\n <FormikFormField\n name=\"allowScaleDownActive\"\n input={(props) => <CheckboxInput {...props} text=\"Allow scale down of active server groups\" />}\n />\n </div>\n </div>\n );\n}\n","import { Registry } from '@spinnaker/core';\n\nimport { ScaleDownClusterConfig } from './ScaleDownClusterConfig';\nimport { validate } from './scaledownClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'scaleDownCluster',\n key: 'scaleDownCluster',\n cloudProvider: 'tencentcloud',\n component: ScaleDownClusterConfig,\n validateFn: validate,\n});\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { ScaleDownClusterStageForm } from './ScaleDownClusterStageForm';\n\nexport function ScaleDownClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <ScaleDownClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n NgReact,\n NumberInput,\n SelectInput,\n StageConfigField,\n} from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function ShrinkClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Shrink Options\">\n <div className=\"form-inline\">\n Shrink to\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n {pluralize('server group', stage.shrinkToSize)}, keeping the\n <FormikFormField\n name=\"retainLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingEnabledServerGroups)} enabled.\n </div>\n </StageConfigField>\n <div className=\"form-group\">\n <div className=\"col-md-offset-3 col-md-6 checkbox\">\n <FormikFormField\n name=\"allowDeleteActive\"\n input={(props) => <CheckboxInput {...props} text=\"Allow deletion of active server groups\" />}\n />\n </div>\n </div>\n </div>\n );\n}\n","import { Registry } from '@spinnaker/core';\n\nimport { ShrinkClusterConfig } from './ShrinkClusterConfig';\nimport { validate } from './shrinkClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'shrinkCluster',\n key: 'shrinkCluster',\n cloudProvider: 'tencentcloud',\n component: ShrinkClusterConfig,\n validateFn: validate,\n});\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { ShrinkClusterStageForm } from './ShrinkClusterStageForm';\n\nexport function ShrinkClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <ShrinkClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import IInjectorService = angular.auto.IInjectorService;\n\nimport { ReactInject } from '@spinnaker/core';\n\n// prettier-ignore\nexport class TencentcloudNgReactInjector extends ReactInject {\n public $injectorProxy = {} as IInjectorService;\n\n // Reactified components\n\n public initialize($injector: IInjectorService) {\n const realInjector: { [key: string]: Function } = $injector as any;\n const proxyInjector: { [key: string]: Function } = this.$injectorProxy as any;\n\n Object.keys($injector)\n .filter(key => typeof realInjector[key] === 'function')\n .forEach(key => proxyInjector[key] = realInjector[key].bind(realInjector));\n }\n}\n\nexport const TencentcloudNgReact = new TencentcloudNgReactInjector();\n","import IInjectorService = angular.auto.IInjectorService;\n\nimport { ReactInject } from '@spinnaker/core';\n\n// prettier-ignore\nexport class TencentcloudReactInject extends ReactInject {\n\n\n public initialize($injector: IInjectorService) {\n this.$injector = $injector;\n }\n}\n\nexport const TencentcloudReactInjector: TencentcloudReactInject = new TencentcloudReactInject();\n","import { module } from 'angular';\n\nimport { TencentcloudNgReact } from './tencentcloud.ngReact';\nimport { TencentcloudReactInjector } from './tencentcloud.react.injector';\n\nexport const TENCENTCLOUD_REACT_MODULE = 'spinnaker.tencentcloud.react';\nmodule(TENCENTCLOUD_REACT_MODULE, []).run([\n '$injector',\n function ($injector: any) {\n // Make angular services importable and (TODO when relevant) convert angular components to react\n TencentcloudReactInjector.initialize($injector);\n TencentcloudNgReact.initialize($injector);\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nexport const TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER = 'spinnaker.tencentcloud.search.searchResultFormatter';\nmodule(TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER, []).factory('tencentcloudSearchResultFormatter', function () {\n return {\n securityGroups: function (entry) {},\n };\n});\n","import type { IApplicationNameValidator } from '@spinnaker/core';\nimport { ApplicationNameValidator, FirewallLabels } from '@spinnaker/core';\n\nclass TencentcloudApplicationNameValidator implements IApplicationNameValidator {\n private validateSpecialCharacters(name: string, errors: string[]): void {\n const pattern = /^[a-zA-Z_0-9.]*$/g;\n if (!pattern.test(name)) {\n errors.push('Only dot(.) and underscore(_) special characters are allowed.');\n }\n }\n\n private validateLoadBalancerCharacters(name: string, warnings: string[]) {\n if (name.includes('.') || name.includes('_')) {\n warnings.push(`If the application's name contains an underscore(_) or dot(.),\n you will not be able to create a load balancer,\n preventing it from being used as a front end service.`);\n }\n }\n\n private validateLength(name: string, warnings: string[], errors: string[]) {\n if (name.length > 250) {\n errors.push('The maximum length for an application in Tencentcloud is 250 characters.');\n return;\n }\n if (name.length > 240) {\n if (name.length >= 248) {\n warnings.push(\n `You will not be able to include a stack or detail field for clusters or ${FirewallLabels.get('firewalls')}.`,\n );\n } else {\n const remaining = 248 - name.length;\n warnings.push(`If you plan to include a stack or detail field for clusters, you will only\n have ~${remaining} characters to do so.`);\n }\n }\n if (name.length > 20) {\n if (name.length > 32) {\n warnings.push(`You will not be able to create an Tencentcloud load balancer for this application if the\n application's name is longer than 32 characters (currently: ${name.length} characters)`);\n } else {\n if (name.length >= 30) {\n warnings.push(`If you plan to create load balancers for this application, be aware that the character limit\n for load balancer names is 32 (currently: ${name.length} characters). With separators (\"-\"), you will not\n be able to add a stack and detail field to any load balancer.`);\n } else {\n const remaining = 30 - name.length;\n warnings.push(`If you plan to create load balancers for this application, be aware that the character limit\n for load balancer names is 32. You will only have ~${remaining} characters to add a stack or detail\n field to any load balancer.`);\n }\n }\n }\n }\n\n public validate(name = '') {\n const warnings: string[] = [];\n const errors: string[] = [];\n\n if (name.length) {\n this.validateSpecialCharacters(name, errors);\n this.validateLoadBalancerCharacters(name, warnings);\n this.validateLength(name, warnings, errors);\n }\n\n return {\n warnings,\n errors,\n };\n }\n}\nApplicationNameValidator.registerValidator('tencentcloud', new TencentcloudApplicationNameValidator());\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { CloudProviderRegistry, DeploymentStrategyRegistry } from '@spinnaker/core';\n\nimport './help/tencentcloud.help';\nimport { TencentcloudImageReader } from './image';\nimport logo from './logo/tencentcloud.logo.svg';\n// load pipeline stage\nimport './pipeline/stages/disableCluster/disableClusterStage';\nimport './pipeline/stages/rollbackCluster/rollbackClusterStage';\nimport './pipeline/stages/scaleDownCluster/scaleDownClusterStage';\nimport './pipeline/stages/shrinkCluster/shrinkClusterStage';\nimport { TENCENTCLOUD_REACT_MODULE } from './reactShims/tencentcloud.react.module';\nimport { TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER } from './search/searchResultFormatter';\nimport './validation/ApplicationNameValidator';\n\nexport const TENCENTCLOUD_MODULE = 'spinnaker.tencentcloud';\nmodule(TENCENTCLOUD_MODULE, [TENCENTCLOUD_REACT_MODULE, TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER]).config(() => {\n CloudProviderRegistry.registerProvider('tencentcloud', {\n name: 'tencentcloud',\n logo: {\n path: logo,\n },\n image: {\n reader: TencentcloudImageReader,\n },\n });\n});\n\nDeploymentStrategyRegistry.registerProvider('tencentcloud', ['custom', 'redblack', 'rollingpush', 'rollingredblack']);\n","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20version%3D%221.1%22%20id%3D%22%E5%9B%BE%E5%B1%82_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%22120px%22%20height%3D%2248px%22%20viewBox%3D%220%200%20120%2048%22%20style%3D%22enable-background%3Anew%200%200%20120%2048%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%20%3Cg%3E%20%20%3Cpath%20d%3D%22M93.829%2C13.731H81.181v1.83h3.808v6.673h-4.364v1.83h4.364v11.19h2.013v-11.19h4.814V35.02h3.802v-1.831h-1.788V13.731z%20%20%20%20M87.002%2C22.234v-6.673h4.814v6.673H87.002z%22%2F%3E%20%20%3Crect%20x%3D%2258.743%22%20y%3D%2230.136%22%20width%3D%229.979%22%20height%3D%221.83%22%2F%3E%20%20%3Cpath%20d%3D%22M51.944%2C26.749c0%2C3.328-0.269%2C5.854-0.823%2C8.093c-0.058%2C0.207%2C0.004%2C0.263%2C0.113%2C0.263c0.038%2C0%2C1.525%2C0%2C1.835%2C0%20%20%20c0.613-3.075%2C0.693-5.626%2C0.703-7.477h2.565v5.69h-1.821c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h3.257V13.777h-6.22V26.749z%20%20%20%20M53.774%2C25.98V21.6h2.563v4.38H53.774z%20M56.337%2C15.607v4.346h-2.563v-4.346H56.337z%22%2F%3E%20%20%3Cpath%20d%3D%22M69.429%2C21.196h2.457v-1.647h-7.16c0.216-0.526%2C0.41-1.091%2C0.588-1.702h6.123V16.2h-1.794%20%20%20c0.299-1.018%2C0.651-2.219%2C0.672-2.288c0.036-0.122-0.028-0.169-0.107-0.169h-1.558L67.927%2C16.2h-2.202%20%20%20c0.205-0.952%2C0.384-2.007%2C0.547-3.191c0.019-0.137-0.055-0.164-0.146-0.164c-0.073%2C0-1.278%2C0-1.774%2C0%20%20%20c-0.181%2C1.258-0.371%2C2.342-0.614%2C3.355h-1.08l-0.722-2.457h-1.558c-0.079%2C0-0.143%2C0.047-0.107%2C0.169%20%20%20c0.02%2C0.07%2C0.373%2C1.271%2C0.672%2C2.288h-1.747v1.647h4.079c-0.166%2C0.52-0.41%2C1.133-0.67%2C1.702h-3.858v1.647h2.898%20%20%20c-1.168%2C1.659-2.417%2C2.422-2.915%2C2.727c0%2C0.234%2C0%2C1.83%2C0%2C1.884c0%2C0.095%2C0.075%2C0.196%2C0.373%2C0.027%20%20%20c0.542-0.307%2C1.12-0.655%2C1.705-1.087h6.817l-0.058%2C2.467h-5.382l0.082-1.475c0-0.064-0.046-0.111-0.112-0.111%20%20%20c-0.102%2C0-1.721%2C0-1.721%2C0l-0.173%2C3.122c0%2C0.064%2C0.046%2C0.111%2C0.112%2C0.111c0.102%2C0%2C9.285%2C0%2C9.285%2C0v4.454h-4.185%20%20%20c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h5.807v-7.931h-2.273l0.075-3.203c0.85%2C0.79%2C1.712%2C1.379%2C2.497%2C1.824%20%20%20c0.298%2C0.169%2C0.373%2C0.068%2C0.373-0.027c0-0.054%2C0-1.651%2C0-1.884C71.844%2C23.618%2C70.597%2C22.853%2C69.429%2C21.196z%20M67.188%2C21.196%20%20%20c0.438%2C0.721%2C0.91%2C1.351%2C1.398%2C1.903h-5.991c0.465-0.537%2C0.915-1.163%2C1.335-1.903H67.188z%22%2F%3E%20%20%3Cpath%20d%3D%22M82.457%2C28.864c-0.034%2C0.026-1.742%2C1.32-3.395%2C2.572V19.538h-4.704v2.013h2.704v11.4%20%20%20c-0.644%2C0.488-1.081%2C0.819-1.081%2C0.819l1.105%2C1.459l5.552-4.207c0%2C0%2C0-2.021%2C0-2.073C82.639%2C28.851%2C82.529%2C28.809%2C82.457%2C28.864z%22%20%20%20%2F%3E%20%20%3Cpath%20d%3D%22M77.329%2C17.736c0%2C0%2C2.15%2C0%2C2.2%2C0c0.098%2C0%2C0.137-0.106%2C0.094-0.171c-0.04-0.061-2.775-4.238-2.775-4.238s-2.117%2C0-2.2%2C0%20%20%20c-0.083%2C0-0.144%2C0.096-0.098%2C0.166C74.596%2C13.562%2C77.329%2C17.736%2C77.329%2C17.736z%22%2F%3E%20%20%3Crect%20x%3D%2299.874%22%20y%3D%2214.22%22%20width%3D%2215.888%22%20height%3D%222.013%22%2F%3E%20%20%3Cpath%20d%3D%22M105.637%2C23.841H118v-2.013H97.636v2.013h5.65c-1.167%2C3.064-4.095%2C10.753-4.115%2C10.809%20%20%20c-0.032%2C0.089%2C0.026%2C0.155%2C0.104%2C0.155c0.049%2C0%2C17.523%2C0%2C17.564%2C0c0.083%2C0%2C0.131-0.082%2C0.101-0.16%20%20%20c-0.019-0.049-2.619-6.885-2.619-6.885s-2.103%2C0-2.186%2C0s-0.133%2C0.08-0.105%2C0.153c0.028%2C0.073%2C1.853%2C4.879%2C1.853%2C4.879h-11.646%20%20%20L105.637%2C23.841z%22%2F%3E%20%3C%2Fg%3E%20%3Cg%3E%20%20%3Cpath%20style%3D%22fill%3A%2300A3FF%3B%22%20d%3D%22M39.157%2C33.89c-0.764%2C0.756-2.125%2C1.613-4.361%2C1.689c-1.034%2C0.035-2.241%2C0.039-2.793%2C0.039%20%20%20c-0.603%2C0-5.918%2C0-12.012%2C0c4.37-4.245%2C8.182-7.947%2C8.615-8.367c0.396-0.385%2C1.287-1.237%2C2.056-1.929%20%20%20c1.687-1.519%2C3.206-1.825%2C4.28-1.815c1.683%2C0.016%2C3.214%2C0.703%2C4.308%2C1.813C41.591%2C27.712%2C41.535%2C31.536%2C39.157%2C33.89%20%20%20%20M42.034%2C22.597c-1.795-1.83-4.296-2.983-7.077-2.984c-2.404%2C0-4.474%2C0.829-6.281%2C2.3c-0.788%2C0.641-1.614%2C1.409-2.653%2C2.419%20%20%20c-0.516%2C0.501-15.485%2C15.026-15.485%2C15.026c0.785%2C0.112%2C1.864%2C0.145%2C2.826%2C0.151c0.902%2C0.006%2C18.1%2C0.004%2C18.82%2C0.004%20%20%20c1.449%2C0%2C2.392-0.002%2C3.405-0.076c2.323-0.17%2C4.518-1.022%2C6.292-2.764C45.82%2C32.805%2C45.879%2C26.526%2C42.034%2C22.597z%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%2300C8DC%3B%22%20d%3D%22M17.883%2C21.663c-1.76-1.317-3.729-2.053-5.963-2.05c-2.781%2C0-5.283%2C1.153-7.077%2C2.984%20%20%20c-3.845%2C3.93-3.786%2C10.209%2C0.154%2C14.077c1.582%2C1.553%2C3.498%2C2.398%2C5.541%2C2.684l3.854-3.74c-0.623-0.003-1.518-0.011-2.311-0.038%20%20%20c-2.235-0.076-3.597-0.934-4.361-1.689c-2.379-2.354-2.434-6.178-0.094-8.57c1.094-1.11%2C2.625-1.797%2C4.308-1.813%20%20%20c1.055-0.004%2C2.486%2C0.302%2C4.103%2C1.643c0.772%2C0.64%2C2.486%2C2.147%2C3.239%2C2.825c0.038%2C0.035%2C0.084%2C0.038%2C0.129%2C0.001l2.654-2.589%20%20%20c0.046-0.045%2C0.043-0.105-0.002-0.146C20.781%2C24.088%2C18.972%2C22.474%2C17.883%2C21.663%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%23006EFF%3B%22%20d%3D%22M36%2C17.365c-1.831-5.172-6.762-8.879-12.562-8.879c-6.652%2C0-12.165%2C4.892-13.164%2C11.264%20%20%20c0.535-0.09%2C1.085-0.138%2C1.646-0.138c0.781-0.001%2C1.529%2C0.09%2C2.248%2C0.263c0.014%2C0.003%2C0.028%2C0.005%2C0.042%2C0.008%20%20%20c0.901-4.302%2C4.705-7.498%2C9.228-7.498c3.767%2C0%2C7.072%2C2.272%2C8.562%2C5.492c0.023%2C0.051%2C0.063%2C0.067%2C0.104%2C0.056%20%20%20c1.121-0.308%2C2.464-0.487%2C3.762-0.391C35.992%2C17.552%2C36.04%2C17.481%2C36%2C17.365%22%2F%3E%20%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\"","import type { IProviderSettings } from '@spinnaker/core';\nimport { SETTINGS } from '@spinnaker/core';\n\nexport interface IClassicLaunchAllowlist {\n region: string;\n credentials: string;\n}\n\nexport interface ITencentcloudProviderSettings extends IProviderSettings {\n defaults: {\n account?: string;\n region?: string;\n subnetType?: string;\n vpc?: string;\n };\n defaultSecurityGroups?: string[];\n loadBalancers?: {\n inferInternalFlagFromSubnet: boolean;\n certificateTypes?: string[];\n };\n classicLaunchLockout?: number;\n classicLaunchAllowlist?: IClassicLaunchAllowlist[];\n metrics?: {\n customNamespaces?: string[];\n };\n minRootVolumeSize?: number;\n disableSpotPricing?: boolean;\n}\n\nexport const TencentcloudProviderSettings: ITencentcloudProviderSettings = (SETTINGS.providers\n .tencentcloud as ITencentcloudProviderSettings) || { defaults: {} };\n\nif (TencentcloudProviderSettings) {\n TencentcloudProviderSettings.resetToOriginal = SETTINGS.resetProvider('tencentcloud');\n}\n"],"names":["helpContents","Object","keys","forEach","key","HelpContentsRegistry","register","TencentcloudImageReader","[object Object]","params","q","length","$q","when","message","disabled","REST","query","provider","get","catch","name","region","credentials","path","then","results","useEffect","useState","React","AccountRegionClusterSelector","NgReact","DisableClusterStageForm","application","formik","pipeline","stage","values","setFieldValue","accounts","setAccounts","_a","_b","_c","_d","_e","_f","_g","AccountService","listAccounts","accounts2","isNew","attributes","platformHealthOnlyShowOverride","platformHealthOnly","defaultCredentials","tencentcloud","regions","defaultRegions","remainingEnabledServerGroups","preferLargerOverNewer","createElement","className","strategy","clusterField","component","StageConfigField","label","FormikFormField","required","input","props","NumberInput","min","SelectInput","options","value","str","Registry","registerStage","provides","cloudProvider","updateStage","stageWithDefaults","useMemo","cloneDeep","FormikStageConfig","onChange","render","validateFn","formValidator","FormValidator","field","validateForm","RollbackClusterStageForm","max","ScaleDownClusterStageForm","remainingFullSizeServerGroups","CheckboxInput","text","ShrinkClusterStageForm","pluralize","val","shrinkToSize","TencentcloudNgReact","ReactInject","super","arguments","this","$injectorProxy","$injector","realInjector","proxyInjector","filter","bind","TencentcloudReactInjector","module","run","initialize","factory","securityGroups","entry","ApplicationNameValidator","registerValidator","errors","test","push","warnings","includes","FirewallLabels","remaining","validateSpecialCharacters","validateLoadBalancerCharacters","validateLength","TENCENTCLOUD_MODULE","config","CloudProviderRegistry","registerProvider","logo","image","reader","DeploymentStrategyRegistry","TencentcloudProviderSettings","SETTINGS","providers","defaults","resetToOriginal","resetProvider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/help/tencentcloud.help.ts","../src/image/image.reader.ts","../src/logo/tencentcloud.logo.svg","../src/pipeline/stages/disableCluster/DisableClusterStageForm.tsx","../src/pipeline/stages/disableCluster/DisableClusterConfig.tsx","../src/pipeline/stages/disableCluster/disableClusterValidators.ts","../src/pipeline/stages/disableCluster/disableClusterStage.ts","../src/pipeline/stages/rollbackCluster/RollbackClusterStageForm.tsx","../src/pipeline/stages/rollbackCluster/RollbackClusterConfig.tsx","../src/pipeline/stages/rollbackCluster/rollbackClusterValidators.ts","../src/pipeline/stages/rollbackCluster/rollbackClusterStage.ts","../src/pipeline/stages/scaleDownCluster/ScaleDownClusterStageForm.tsx","../src/pipeline/stages/scaleDownCluster/ScaleDownClusterConfig.tsx","../src/pipeline/stages/scaleDownCluster/scaledownClusterValidators.ts","../src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.ts","../src/pipeline/stages/shrinkCluster/ShrinkClusterStageForm.tsx","../src/pipeline/stages/shrinkCluster/ShrinkClusterConfig.tsx","../src/pipeline/stages/shrinkCluster/shrinkClusterValidators.ts","../src/pipeline/stages/shrinkCluster/shrinkClusterStage.ts","../src/reactShims/tencentcloud.ngReact.ts","../src/reactShims/tencentcloud.react.injector.ts","../src/reactShims/tencentcloud.react.module.ts","../src/search/searchResultFormatter.js","../src/validation/ApplicationNameValidator.ts","../src/tencentcloud.module.ts","../src/tencentcloud.settings.ts"],"sourcesContent":["import { HelpContentsRegistry } from '@spinnaker/core';\n\nconst helpContents: { [key: string]: string } = {};\n\nObject.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));\n","import { $q } from 'ngimport';\n\nimport { REST } from '@spinnaker/core';\nexport interface ITencentcloudSnapshot {\n diskSize: string;\n diskType: string;\n diskUsage: 'SYSTEM_DISK' | 'DATA_DISK';\n snapshotId: string;\n}\nexport interface ITencentcloudImage {\n accounts: string[];\n images: {\n [region: string]: string[];\n };\n imgIds: {\n [region: string]: string[];\n };\n attributes: {\n createdTime?: string;\n creationDate?: string;\n snapshotSet?: ITencentcloudSnapshot[];\n osPlatform: string;\n };\n imageName: string;\n tags: {\n [tag: string]: string;\n };\n tagsByImageId: {\n [imageId: string]: ITencentcloudImage['tags'];\n };\n}\n\nexport class TencentcloudImageReader {\n public findImages(params: { q: string; region?: string }): PromiseLike<ITencentcloudImage[]> {\n if (!params.q || params.q.length < 3) {\n return $q.when([{ message: 'Please enter at least 3 characters...', disabled: true }]) as any;\n }\n\n return REST('/images/find')\n .query({ ...params, provider: 'tencentcloud' })\n .get()\n .catch(() => [] as ITencentcloudImage[]);\n }\n\n public getImage(name: string, region: string, credentials: string): PromiseLike<ITencentcloudImage> {\n return REST('/images')\n .path(credentials, region, name)\n .query({ provider: 'tencentcloud' })\n .get()\n .then((results: any[]) => (results && results.length ? results[0] : null))\n .catch(() => null as ITencentcloudImage);\n }\n}\n","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20version%3D%221.1%22%20id%3D%22%E5%9B%BE%E5%B1%82_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%22120px%22%20height%3D%2248px%22%20viewBox%3D%220%200%20120%2048%22%20style%3D%22enable-background%3Anew%200%200%20120%2048%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%20%3Cg%3E%20%20%3Cpath%20d%3D%22M93.829%2C13.731H81.181v1.83h3.808v6.673h-4.364v1.83h4.364v11.19h2.013v-11.19h4.814V35.02h3.802v-1.831h-1.788V13.731z%20%20%20%20M87.002%2C22.234v-6.673h4.814v6.673H87.002z%22%2F%3E%20%20%3Crect%20x%3D%2258.743%22%20y%3D%2230.136%22%20width%3D%229.979%22%20height%3D%221.83%22%2F%3E%20%20%3Cpath%20d%3D%22M51.944%2C26.749c0%2C3.328-0.269%2C5.854-0.823%2C8.093c-0.058%2C0.207%2C0.004%2C0.263%2C0.113%2C0.263c0.038%2C0%2C1.525%2C0%2C1.835%2C0%20%20%20c0.613-3.075%2C0.693-5.626%2C0.703-7.477h2.565v5.69h-1.821c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h3.257V13.777h-6.22V26.749z%20%20%20%20M53.774%2C25.98V21.6h2.563v4.38H53.774z%20M56.337%2C15.607v4.346h-2.563v-4.346H56.337z%22%2F%3E%20%20%3Cpath%20d%3D%22M69.429%2C21.196h2.457v-1.647h-7.16c0.216-0.526%2C0.41-1.091%2C0.588-1.702h6.123V16.2h-1.794%20%20%20c0.299-1.018%2C0.651-2.219%2C0.672-2.288c0.036-0.122-0.028-0.169-0.107-0.169h-1.558L67.927%2C16.2h-2.202%20%20%20c0.205-0.952%2C0.384-2.007%2C0.547-3.191c0.019-0.137-0.055-0.164-0.146-0.164c-0.073%2C0-1.278%2C0-1.774%2C0%20%20%20c-0.181%2C1.258-0.371%2C2.342-0.614%2C3.355h-1.08l-0.722-2.457h-1.558c-0.079%2C0-0.143%2C0.047-0.107%2C0.169%20%20%20c0.02%2C0.07%2C0.373%2C1.271%2C0.672%2C2.288h-1.747v1.647h4.079c-0.166%2C0.52-0.41%2C1.133-0.67%2C1.702h-3.858v1.647h2.898%20%20%20c-1.168%2C1.659-2.417%2C2.422-2.915%2C2.727c0%2C0.234%2C0%2C1.83%2C0%2C1.884c0%2C0.095%2C0.075%2C0.196%2C0.373%2C0.027%20%20%20c0.542-0.307%2C1.12-0.655%2C1.705-1.087h6.817l-0.058%2C2.467h-5.382l0.082-1.475c0-0.064-0.046-0.111-0.112-0.111%20%20%20c-0.102%2C0-1.721%2C0-1.721%2C0l-0.173%2C3.122c0%2C0.064%2C0.046%2C0.111%2C0.112%2C0.111c0.102%2C0%2C9.285%2C0%2C9.285%2C0v4.454h-4.185%20%20%20c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h5.807v-7.931h-2.273l0.075-3.203c0.85%2C0.79%2C1.712%2C1.379%2C2.497%2C1.824%20%20%20c0.298%2C0.169%2C0.373%2C0.068%2C0.373-0.027c0-0.054%2C0-1.651%2C0-1.884C71.844%2C23.618%2C70.597%2C22.853%2C69.429%2C21.196z%20M67.188%2C21.196%20%20%20c0.438%2C0.721%2C0.91%2C1.351%2C1.398%2C1.903h-5.991c0.465-0.537%2C0.915-1.163%2C1.335-1.903H67.188z%22%2F%3E%20%20%3Cpath%20d%3D%22M82.457%2C28.864c-0.034%2C0.026-1.742%2C1.32-3.395%2C2.572V19.538h-4.704v2.013h2.704v11.4%20%20%20c-0.644%2C0.488-1.081%2C0.819-1.081%2C0.819l1.105%2C1.459l5.552-4.207c0%2C0%2C0-2.021%2C0-2.073C82.639%2C28.851%2C82.529%2C28.809%2C82.457%2C28.864z%22%20%20%20%2F%3E%20%20%3Cpath%20d%3D%22M77.329%2C17.736c0%2C0%2C2.15%2C0%2C2.2%2C0c0.098%2C0%2C0.137-0.106%2C0.094-0.171c-0.04-0.061-2.775-4.238-2.775-4.238s-2.117%2C0-2.2%2C0%20%20%20c-0.083%2C0-0.144%2C0.096-0.098%2C0.166C74.596%2C13.562%2C77.329%2C17.736%2C77.329%2C17.736z%22%2F%3E%20%20%3Crect%20x%3D%2299.874%22%20y%3D%2214.22%22%20width%3D%2215.888%22%20height%3D%222.013%22%2F%3E%20%20%3Cpath%20d%3D%22M105.637%2C23.841H118v-2.013H97.636v2.013h5.65c-1.167%2C3.064-4.095%2C10.753-4.115%2C10.809%20%20%20c-0.032%2C0.089%2C0.026%2C0.155%2C0.104%2C0.155c0.049%2C0%2C17.523%2C0%2C17.564%2C0c0.083%2C0%2C0.131-0.082%2C0.101-0.16%20%20%20c-0.019-0.049-2.619-6.885-2.619-6.885s-2.103%2C0-2.186%2C0s-0.133%2C0.08-0.105%2C0.153c0.028%2C0.073%2C1.853%2C4.879%2C1.853%2C4.879h-11.646%20%20%20L105.637%2C23.841z%22%2F%3E%20%3C%2Fg%3E%20%3Cg%3E%20%20%3Cpath%20style%3D%22fill%3A%2300A3FF%3B%22%20d%3D%22M39.157%2C33.89c-0.764%2C0.756-2.125%2C1.613-4.361%2C1.689c-1.034%2C0.035-2.241%2C0.039-2.793%2C0.039%20%20%20c-0.603%2C0-5.918%2C0-12.012%2C0c4.37-4.245%2C8.182-7.947%2C8.615-8.367c0.396-0.385%2C1.287-1.237%2C2.056-1.929%20%20%20c1.687-1.519%2C3.206-1.825%2C4.28-1.815c1.683%2C0.016%2C3.214%2C0.703%2C4.308%2C1.813C41.591%2C27.712%2C41.535%2C31.536%2C39.157%2C33.89%20%20%20%20M42.034%2C22.597c-1.795-1.83-4.296-2.983-7.077-2.984c-2.404%2C0-4.474%2C0.829-6.281%2C2.3c-0.788%2C0.641-1.614%2C1.409-2.653%2C2.419%20%20%20c-0.516%2C0.501-15.485%2C15.026-15.485%2C15.026c0.785%2C0.112%2C1.864%2C0.145%2C2.826%2C0.151c0.902%2C0.006%2C18.1%2C0.004%2C18.82%2C0.004%20%20%20c1.449%2C0%2C2.392-0.002%2C3.405-0.076c2.323-0.17%2C4.518-1.022%2C6.292-2.764C45.82%2C32.805%2C45.879%2C26.526%2C42.034%2C22.597z%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%2300C8DC%3B%22%20d%3D%22M17.883%2C21.663c-1.76-1.317-3.729-2.053-5.963-2.05c-2.781%2C0-5.283%2C1.153-7.077%2C2.984%20%20%20c-3.845%2C3.93-3.786%2C10.209%2C0.154%2C14.077c1.582%2C1.553%2C3.498%2C2.398%2C5.541%2C2.684l3.854-3.74c-0.623-0.003-1.518-0.011-2.311-0.038%20%20%20c-2.235-0.076-3.597-0.934-4.361-1.689c-2.379-2.354-2.434-6.178-0.094-8.57c1.094-1.11%2C2.625-1.797%2C4.308-1.813%20%20%20c1.055-0.004%2C2.486%2C0.302%2C4.103%2C1.643c0.772%2C0.64%2C2.486%2C2.147%2C3.239%2C2.825c0.038%2C0.035%2C0.084%2C0.038%2C0.129%2C0.001l2.654-2.589%20%20%20c0.046-0.045%2C0.043-0.105-0.002-0.146C20.781%2C24.088%2C18.972%2C22.474%2C17.883%2C21.663%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%23006EFF%3B%22%20d%3D%22M36%2C17.365c-1.831-5.172-6.762-8.879-12.562-8.879c-6.652%2C0-12.165%2C4.892-13.164%2C11.264%20%20%20c0.535-0.09%2C1.085-0.138%2C1.646-0.138c0.781-0.001%2C1.529%2C0.09%2C2.248%2C0.263c0.014%2C0.003%2C0.028%2C0.005%2C0.042%2C0.008%20%20%20c0.901-4.302%2C4.705-7.498%2C9.228-7.498c3.767%2C0%2C7.072%2C2.272%2C8.562%2C5.492c0.023%2C0.051%2C0.063%2C0.067%2C0.104%2C0.056%20%20%20c1.121-0.308%2C2.464-0.487%2C3.762-0.391C35.992%2C17.552%2C36.04%2C17.481%2C36%2C17.365%22%2F%3E%20%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\"","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport { AccountService, FormikFormField, NgReact, NumberInput, SelectInput, StageConfigField } from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function DisableClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Disable Options\">\n <div className=\"form-inline\">\n Keep the\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n <FormikFormField\n name=\"preferLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingEnabledServerGroups)} enabled.\n </div>\n </StageConfigField>\n </div>\n );\n}\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { DisableClusterStageForm } from './DisableClusterStageForm';\n\nexport function DisableClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <DisableClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import { Registry } from '@spinnaker/core';\n\nimport { DisableClusterConfig } from './DisableClusterConfig';\nimport { validate } from './disableClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'disableCluster',\n key: 'disableCluster',\n cloudProvider: 'tencentcloud',\n component: DisableClusterConfig,\n validateFn: validate,\n});\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport { AccountService, FormikFormField, NgReact, NumberInput, StageConfigField } from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function RollbackClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Rollback Options\">\n <div className=\"row\">\n <div className=\"col-sm-10 col-sm-offset-2\">\n Wait\n <FormikFormField name=\"wait\" required input={(props) => <NumberInput {...props} min={0} />} />\n seconds between regional rollbacks.\n </div>\n <div className=\"col-sm-10 col-sm-offset-2\">\n Consider rollback successful when\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} max={100} />}\n />\n percent of instances are healthy.\n </div>\n </div>\n </StageConfigField>\n </div>\n );\n}\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { RollbackClusterStageForm } from './RollbackClusterStageForm';\n\nexport function RollbackClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <RollbackClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import { Registry } from '@spinnaker/core';\n\nimport { RollbackClusterConfig } from './RollbackClusterConfig';\nimport { validate } from './rollbackClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'rollbackCluster',\n key: 'rollbackCluster',\n cloudProvider: 'tencentcloud',\n component: RollbackClusterConfig,\n validateFn: validate,\n});\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n NgReact,\n NumberInput,\n SelectInput,\n StageConfigField,\n} from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function ScaleDownClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"ScaleDown Options\">\n <div className=\"form-inline\">\n Keep the\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n <FormikFormField\n name=\"preferLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingFullSizeServerGroups)} at current size.\n <p>The remaining server groups will be scaled down to zero instances.</p>\n </div>\n </StageConfigField>\n <div className=\"form-group\">\n <FormikFormField\n name=\"allowScaleDownActive\"\n input={(props) => <CheckboxInput {...props} text=\"Allow scale down of active server groups\" />}\n />\n </div>\n </div>\n );\n}\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { ScaleDownClusterStageForm } from './ScaleDownClusterStageForm';\n\nexport function ScaleDownClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <ScaleDownClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import { Registry } from '@spinnaker/core';\n\nimport { ScaleDownClusterConfig } from './ScaleDownClusterConfig';\nimport { validate } from './scaledownClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'scaleDownCluster',\n key: 'scaleDownCluster',\n cloudProvider: 'tencentcloud',\n component: ScaleDownClusterConfig,\n validateFn: validate,\n});\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n NgReact,\n NumberInput,\n SelectInput,\n StageConfigField,\n} from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function ShrinkClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Shrink Options\">\n <div className=\"form-inline\">\n Shrink to\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n {pluralize('server group', stage.shrinkToSize)}, keeping the\n <FormikFormField\n name=\"retainLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingEnabledServerGroups)} enabled.\n </div>\n </StageConfigField>\n <div className=\"form-group\">\n <div className=\"col-md-offset-3 col-md-6 checkbox\">\n <FormikFormField\n name=\"allowDeleteActive\"\n input={(props) => <CheckboxInput {...props} text=\"Allow deletion of active server groups\" />}\n />\n </div>\n </div>\n </div>\n );\n}\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { ShrinkClusterStageForm } from './ShrinkClusterStageForm';\n\nexport function ShrinkClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <ShrinkClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import { Registry } from '@spinnaker/core';\n\nimport { ShrinkClusterConfig } from './ShrinkClusterConfig';\nimport { validate } from './shrinkClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'shrinkCluster',\n key: 'shrinkCluster',\n cloudProvider: 'tencentcloud',\n component: ShrinkClusterConfig,\n validateFn: validate,\n});\n","import IInjectorService = angular.auto.IInjectorService;\n\nimport { ReactInject } from '@spinnaker/core';\n\n// prettier-ignore\nexport class TencentcloudNgReactInjector extends ReactInject {\n public $injectorProxy = {} as IInjectorService;\n\n // Reactified components\n\n public initialize($injector: IInjectorService) {\n const realInjector: { [key: string]: Function } = $injector as any;\n const proxyInjector: { [key: string]: Function } = this.$injectorProxy as any;\n\n Object.keys($injector)\n .filter(key => typeof realInjector[key] === 'function')\n .forEach(key => proxyInjector[key] = realInjector[key].bind(realInjector));\n }\n}\n\nexport const TencentcloudNgReact = new TencentcloudNgReactInjector();\n","import IInjectorService = angular.auto.IInjectorService;\n\nimport { ReactInject } from '@spinnaker/core';\n\n// prettier-ignore\nexport class TencentcloudReactInject extends ReactInject {\n\n\n public initialize($injector: IInjectorService) {\n this.$injector = $injector;\n }\n}\n\nexport const TencentcloudReactInjector: TencentcloudReactInject = new TencentcloudReactInject();\n","import { module } from 'angular';\n\nimport { TencentcloudNgReact } from './tencentcloud.ngReact';\nimport { TencentcloudReactInjector } from './tencentcloud.react.injector';\n\nexport const TENCENTCLOUD_REACT_MODULE = 'spinnaker.tencentcloud.react';\nmodule(TENCENTCLOUD_REACT_MODULE, []).run([\n '$injector',\n function ($injector: any) {\n // Make angular services importable and (TODO when relevant) convert angular components to react\n TencentcloudReactInjector.initialize($injector);\n TencentcloudNgReact.initialize($injector);\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nexport const TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER = 'spinnaker.tencentcloud.search.searchResultFormatter';\nmodule(TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER, []).factory('tencentcloudSearchResultFormatter', function () {\n return {\n securityGroups: function (entry) {},\n };\n});\n","import type { IApplicationNameValidator } from '@spinnaker/core';\nimport { ApplicationNameValidator, FirewallLabels } from '@spinnaker/core';\n\nclass TencentcloudApplicationNameValidator implements IApplicationNameValidator {\n private validateSpecialCharacters(name: string, errors: string[]): void {\n const pattern = /^[a-zA-Z_0-9.]*$/g;\n if (!pattern.test(name)) {\n errors.push('Only dot(.) and underscore(_) special characters are allowed.');\n }\n }\n\n private validateLoadBalancerCharacters(name: string, warnings: string[]) {\n if (name.includes('.') || name.includes('_')) {\n warnings.push(`If the application's name contains an underscore(_) or dot(.),\n you will not be able to create a load balancer,\n preventing it from being used as a front end service.`);\n }\n }\n\n private validateLength(name: string, warnings: string[], errors: string[]) {\n if (name.length > 250) {\n errors.push('The maximum length for an application in Tencentcloud is 250 characters.');\n return;\n }\n if (name.length > 240) {\n if (name.length >= 248) {\n warnings.push(\n `You will not be able to include a stack or detail field for clusters or ${FirewallLabels.get('firewalls')}.`,\n );\n } else {\n const remaining = 248 - name.length;\n warnings.push(`If you plan to include a stack or detail field for clusters, you will only\n have ~${remaining} characters to do so.`);\n }\n }\n if (name.length > 20) {\n if (name.length > 32) {\n warnings.push(`You will not be able to create an Tencentcloud load balancer for this application if the\n application's name is longer than 32 characters (currently: ${name.length} characters)`);\n } else {\n if (name.length >= 30) {\n warnings.push(`If you plan to create load balancers for this application, be aware that the character limit\n for load balancer names is 32 (currently: ${name.length} characters). With separators (\"-\"), you will not\n be able to add a stack and detail field to any load balancer.`);\n } else {\n const remaining = 30 - name.length;\n warnings.push(`If you plan to create load balancers for this application, be aware that the character limit\n for load balancer names is 32. You will only have ~${remaining} characters to add a stack or detail\n field to any load balancer.`);\n }\n }\n }\n }\n\n public validate(name = '') {\n const warnings: string[] = [];\n const errors: string[] = [];\n\n if (name.length) {\n this.validateSpecialCharacters(name, errors);\n this.validateLoadBalancerCharacters(name, warnings);\n this.validateLength(name, warnings, errors);\n }\n\n return {\n warnings,\n errors,\n };\n }\n}\nApplicationNameValidator.registerValidator('tencentcloud', new TencentcloudApplicationNameValidator());\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { CloudProviderRegistry, DeploymentStrategyRegistry } from '@spinnaker/core';\n\nimport './help/tencentcloud.help';\nimport { TencentcloudImageReader } from './image';\nimport logo from './logo/tencentcloud.logo.svg';\n// load pipeline stage\nimport './pipeline/stages/disableCluster/disableClusterStage';\nimport './pipeline/stages/rollbackCluster/rollbackClusterStage';\nimport './pipeline/stages/scaleDownCluster/scaleDownClusterStage';\nimport './pipeline/stages/shrinkCluster/shrinkClusterStage';\nimport { TENCENTCLOUD_REACT_MODULE } from './reactShims/tencentcloud.react.module';\nimport { TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER } from './search/searchResultFormatter';\nimport './validation/ApplicationNameValidator';\n\nexport const TENCENTCLOUD_MODULE = 'spinnaker.tencentcloud';\nmodule(TENCENTCLOUD_MODULE, [TENCENTCLOUD_REACT_MODULE, TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER]).config(() => {\n CloudProviderRegistry.registerProvider('tencentcloud', {\n name: 'tencentcloud',\n logo: {\n path: logo,\n },\n image: {\n reader: TencentcloudImageReader,\n },\n });\n});\n\nDeploymentStrategyRegistry.registerProvider('tencentcloud', ['custom', 'redblack', 'rollingpush', 'rollingredblack']);\n","import type { IProviderSettings } from '@spinnaker/core';\nimport { SETTINGS } from '@spinnaker/core';\n\nexport interface IClassicLaunchAllowlist {\n region: string;\n credentials: string;\n}\n\nexport interface ITencentcloudProviderSettings extends IProviderSettings {\n defaults: {\n account?: string;\n region?: string;\n subnetType?: string;\n vpc?: string;\n };\n defaultSecurityGroups?: string[];\n loadBalancers?: {\n inferInternalFlagFromSubnet: boolean;\n certificateTypes?: string[];\n };\n classicLaunchLockout?: number;\n classicLaunchAllowlist?: IClassicLaunchAllowlist[];\n metrics?: {\n customNamespaces?: string[];\n };\n minRootVolumeSize?: number;\n disableSpotPricing?: boolean;\n}\n\nexport const TencentcloudProviderSettings: ITencentcloudProviderSettings = (SETTINGS.providers\n .tencentcloud as ITencentcloudProviderSettings) || { defaults: {} };\n\nif (TencentcloudProviderSettings) {\n TencentcloudProviderSettings.resetToOriginal = SETTINGS.resetProvider('tencentcloud');\n}\n"],"names":["useEffect","useState","AccountRegionClusterSelector","validate"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spinnaker/tencentcloud",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "2025.0.1",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
7
7
|
"publishConfig": {
|
|
8
|
-
"access": "public"
|
|
8
|
+
"access": "public",
|
|
9
|
+
"registry": "https://registry.npmjs.org"
|
|
9
10
|
},
|
|
10
11
|
"scripts": {
|
|
11
12
|
"clean": "shx rm -rf dist",
|
|
@@ -32,5 +33,5 @@
|
|
|
32
33
|
"shx": "0.3.3",
|
|
33
34
|
"typescript": "4.3.5"
|
|
34
35
|
},
|
|
35
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "ad8bab4aea2c6174eeb6c5e20614f15d26313a7a"
|
|
36
37
|
}
|