@spinnaker/tencentcloud 2026.0.1 → 2026.1.0

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 CHANGED
@@ -1,2 +1,2 @@
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 o,NgReact as c,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}=c;function N({application:e,formik:t,pipeline:n}){const c=t.values,{setFieldValue:s}=t,[C,d]=D([]);S((()=>{var t,n,r,a,i,o,C;l.listAccounts("tencentcloud").then((e=>{d(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)&&s("interestingHealthProviderNames",["Tencentcloud"]),!c.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==c?void 0:c.regions)?void 0:i.length)&&(null==(o=null==e?void 0:e.defaultRegions)?void 0:o.tencentcloud)&&s("regions",[...c.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===c.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===c.preferLargerOverNewer&&s("preferLargerOverNewer","false")}),[]);return b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(k,{application:e,clusterField:"cluster",component:c,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(o,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),(u="server group",1===c.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}=c;function q({application:e,formik:t,pipeline:n}){const o=t.values,{setFieldValue:c}=t,[s,C]=A([]);return O((()=>{var t,n,r,a,i,s,d;l.listAccounts("tencentcloud").then((e=>{C(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)&&c("interestingHealthProviderNames",["Tencentcloud"]),!o.credentials&&(null==(r=null==e?void 0:e.defaultCredentials)?void 0:r.tencentcloud)&&c("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==(s=null==e?void 0:e.defaultRegions)?void 0:s.tencentcloud)&&c("regions",[...o.regions,null==(d=null==e?void 0:e.defaultRegions)?void 0:d.tencentcloud]),void 0===o.remainingEnabledServerGroups&&c("remainingEnabledServerGroups",1),void 0===o.preferLargerOverNewer&&c("preferLargerOverNewer","false")}),[]),b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(x,{application:e,clusterField:"cluster",component:o,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:H}=b,{AccountRegionClusterSelector:R}=c;function M({application:e,formik:t,pipeline:n}){const c=t.values,{setFieldValue:s}=t,[C,d]=H([]);z((()=>{var t,n,r,a,i,o,C;l.listAccounts("tencentcloud").then((e=>{d(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)&&s("interestingHealthProviderNames",["Tencentcloud"]),!c.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==c?void 0:c.regions)?void 0:i.length)&&(null==(o=null==e?void 0:e.defaultRegions)?void 0:o.tencentcloud)&&s("regions",[...c.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===c.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===c.preferLargerOverNewer&&s("preferLargerOverNewer","false")}),[]);return b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(R,{application:e,clusterField:"cluster",component:c,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(o,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),(p="server group",1===c.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}=c;function V({application:e,formik:t,pipeline:n}){const c=t.values,{setFieldValue:s}=t,[C,d]=L([]);P((()=>{var t,n,r,a,i,o,C;l.listAccounts("tencentcloud").then((e=>{d(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)&&s("interestingHealthProviderNames",["Tencentcloud"]),!c.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==c?void 0:c.regions)?void 0:i.length)&&(null==(o=null==e?void 0:e.defaultRegions)?void 0:o.tencentcloud)&&s("regions",[...c.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===c.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===c.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:c,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",c.shrinkToSize),", keeping the",b.createElement(a,{name:"retainLargerOverNewer",required:!0,input:e=>b.createElement(o,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),p("server group",c.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}},$="spinnaker.tencentcloud.react";e($,[]).run(["$injector",function(e){T.initialize(e),B.initialize(e)}]);const j="spinnaker.tencentcloud.search.searchResultFormatter";e(j,[]).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 I="spinnaker.tencentcloud";e(I,[$,j]).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 _=f.providers.tencentcloud||{defaults:{}};_&&(_.resetToOriginal=f.resetProvider("tencentcloud"));export{I as TENCENTCLOUD_MODULE,_ as TencentcloudProviderSettings};
1
+ import{module as e}from"angular";import{HelpContentsRegistry as t,REST as n,NgReact as l,AccountService as r,StageConfigField as a,FormikFormField as i,NumberInput as o,SelectInput as c,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}=l;function N({application:e,formik:t,pipeline:n}){const l=t.values,{setFieldValue:s}=t,[C,d]=D([]);S(()=>{var t,n,a,i,o,c,C;r.listAccounts("tencentcloud").then(e=>{d(e)}),l.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"]),!l.credentials&&(null==(a=null==e?void 0:e.defaultCredentials)?void 0:a.tencentcloud)&&s("credentials",null==(i=null==e?void 0:e.defaultCredentials)?void 0:i.tencentcloud),!(null==(o=null==l?void 0:l.regions)?void 0:o.length)&&(null==(c=null==e?void 0:e.defaultRegions)?void 0:c.tencentcloud)&&s("regions",[...l.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===l.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===l.preferLargerOverNewer&&s("preferLargerOverNewer","false")},[]);return b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(k,{application:e,clusterField:"cluster",component:l,accounts:C}),b.createElement(a,{label:"Disable Options"},b.createElement("div",{className:"form-inline"},"Keep the",b.createElement(i,{name:"remainingEnabledServerGroups",required:!0,input:e=>b.createElement(o,{...e,min:0})}),b.createElement(i,{name:"preferLargerOverNewer",required:!0,input:e=>b.createElement(c,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),(u="server group",1===l.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}=l;function q({application:e,formik:t,pipeline:n}){const l=t.values,{setFieldValue:c}=t,[s,C]=A([]);return O(()=>{var t,n,a,i,o,s,d;r.listAccounts("tencentcloud").then(e=>{C(e)}),l.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)&&c("interestingHealthProviderNames",["Tencentcloud"]),!l.credentials&&(null==(a=null==e?void 0:e.defaultCredentials)?void 0:a.tencentcloud)&&c("credentials",null==(i=null==e?void 0:e.defaultCredentials)?void 0:i.tencentcloud),!(null==(o=null==l?void 0:l.regions)?void 0:o.length)&&(null==(s=null==e?void 0:e.defaultRegions)?void 0:s.tencentcloud)&&c("regions",[...l.regions,null==(d=null==e?void 0:e.defaultRegions)?void 0:d.tencentcloud]),void 0===l.remainingEnabledServerGroups&&c("remainingEnabledServerGroups",1),void 0===l.preferLargerOverNewer&&c("preferLargerOverNewer","false")},[]),b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(x,{application:e,clusterField:"cluster",component:l,accounts:s}),b.createElement(a,{label:"Rollback Options"},b.createElement("div",{className:"row"},b.createElement("div",{className:"col-sm-10 col-sm-offset-2"},"Wait",b.createElement(i,{name:"wait",required:!0,input:e=>b.createElement(o,{...e,min:0})}),"seconds between regional rollbacks."),b.createElement("div",{className:"col-sm-10 col-sm-offset-2"},"Consider rollback successful when",b.createElement(i,{name:"remainingEnabledServerGroups",required:!0,input:e=>b.createElement(o,{...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:H}=b,{AccountRegionClusterSelector:R}=l;function M({application:e,formik:t,pipeline:n}){const l=t.values,{setFieldValue:s}=t,[C,d]=H([]);z(()=>{var t,n,a,i,o,c,C;r.listAccounts("tencentcloud").then(e=>{d(e)}),l.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"]),!l.credentials&&(null==(a=null==e?void 0:e.defaultCredentials)?void 0:a.tencentcloud)&&s("credentials",null==(i=null==e?void 0:e.defaultCredentials)?void 0:i.tencentcloud),!(null==(o=null==l?void 0:l.regions)?void 0:o.length)&&(null==(c=null==e?void 0:e.defaultRegions)?void 0:c.tencentcloud)&&s("regions",[...l.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===l.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===l.preferLargerOverNewer&&s("preferLargerOverNewer","false")},[]);return b.createElement("div",{className:"form-horizontal"},!n.strategy&&b.createElement(R,{application:e,clusterField:"cluster",component:l,accounts:C}),b.createElement(a,{label:"ScaleDown Options"},b.createElement("div",{className:"form-inline"},"Keep the",b.createElement(i,{name:"remainingEnabledServerGroups",required:!0,input:e=>b.createElement(o,{...e,min:0})}),b.createElement(i,{name:"preferLargerOverNewer",required:!0,input:e=>b.createElement(c,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),(p="server group",1===l.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(i,{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}=l;function V({application:e,formik:t,pipeline:n}){const l=t.values,{setFieldValue:s}=t,[C,d]=L([]);P(()=>{var t,n,a,i,o,c,C;r.listAccounts("tencentcloud").then(e=>{d(e)}),l.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"]),!l.credentials&&(null==(a=null==e?void 0:e.defaultCredentials)?void 0:a.tencentcloud)&&s("credentials",null==(i=null==e?void 0:e.defaultCredentials)?void 0:i.tencentcloud),!(null==(o=null==l?void 0:l.regions)?void 0:o.length)&&(null==(c=null==e?void 0:e.defaultRegions)?void 0:c.tencentcloud)&&s("regions",[...l.regions,null==(C=null==e?void 0:e.defaultRegions)?void 0:C.tencentcloud]),void 0===l.remainingEnabledServerGroups&&s("remainingEnabledServerGroups",1),void 0===l.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:l,accounts:C}),b.createElement(a,{label:"Shrink Options"},b.createElement("div",{className:"form-inline"},"Shrink to",b.createElement(i,{name:"remainingEnabledServerGroups",required:!0,input:e=>b.createElement(o,{...e,min:0})}),p("server group",l.shrinkToSize),", keeping the",b.createElement(i,{name:"retainLargerOverNewer",required:!0,input:e=>b.createElement(c,{options:[{label:"largest",value:"true"},{label:"newest",value:"false"}],...e})}),p("server group",l.remainingEnabledServerGroups)," enabled.")),b.createElement("div",{className:"form-group"},b.createElement("div",{className:"col-md-offset-3 col-md-6 checkbox"},b.createElement(i,{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}},$="spinnaker.tencentcloud.react";e($,[]).run(["$injector",function(e){T.initialize(e),B.initialize(e)}]);const j="spinnaker.tencentcloud.search.searchResultFormatter";e(j,[]).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 I="spinnaker.tencentcloud";e(I,[$,j]).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 _=f.providers.tencentcloud||{defaults:{}};_&&(_.resetToOriginal=f.resetProvider("tencentcloud"));export{I as TENCENTCLOUD_MODULE,_ as TencentcloudProviderSettings};
2
2
  //# 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","findImages","params","q","length","$q","when","message","disabled","REST","query","provider","get","catch","getImage","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","className","strategy","createElement","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","constructor","super","arguments","this","$injectorProxy","initialize","$injector","realInjector","proxyInjector","filter","bind","TencentcloudReactInjector","TENCENTCLOUD_REACT_MODULE","module","run","TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER","factory","securityGroups","entry","ApplicationNameValidator","registerValidator","validateSpecialCharacters","errors","test","push","validateLoadBalancerCharacters","warnings","includes","validateLength","FirewallLabels","remaining","validate","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/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","findImages","params","q","length","$q","when","message","disabled","REST","query","provider","get","catch","getImage","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","isNew","attributes","platformHealthOnlyShowOverride","platformHealthOnly","defaultCredentials","tencentcloud","regions","defaultRegions","remainingEnabledServerGroups","preferLargerOverNewer","className","strategy","createElement","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","constructor","super","arguments","this","$injectorProxy","initialize","$injector","realInjector","proxyInjector","filter","bind","TencentcloudReactInjector","TENCENTCLOUD_REACT_MODULE","module","run","TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER","factory","securityGroups","entry","ApplicationNameValidator","registerValidator","validateSpecialCharacters","errors","test","push","validateLoadBalancerCharacters","warnings","includes","validateLength","FirewallLabels","remaining","validate","TENCENTCLOUD_MODULE","config","CloudProviderRegistry","registerProvider","logo","image","reader","DeploymentStrategyRegistry","TencentcloudProviderSettings","SETTINGS","providers","defaults","resetToOriginal","resetProvider"],"mappings":"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"}
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "url": "https://github.com/spinnaker/spinnaker.git"
6
6
  },
7
7
  "license": "Apache-2.0",
8
- "version": "2026.0.1",
8
+ "version": "2026.1.0",
9
9
  "module": "dist/index.js",
10
10
  "typings": "dist/index.d.ts",
11
11
  "publishConfig": {
@@ -37,5 +37,5 @@
37
37
  "shx": "0.3.3",
38
38
  "typescript": "5.0.4"
39
39
  },
40
- "gitHead": "230864a7fc8b5dfb38edb1164c7719671f7b4fa3"
40
+ "gitHead": "4cd7c41be5a02ff6c3dc598fca77bfdbcf6f0f56"
41
41
  }