@spinnaker/tencentcloud 0.0.0-main-2
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/CHANGELOG.md +751 -0
- package/LICENSE.txt +203 -0
- package/dist/domain/IKeyPair.d.ts +8 -0
- package/dist/domain/IScalingPolicy.d.ts +44 -0
- package/dist/domain/IScalingProcess.d.ts +10 -0
- package/dist/domain/ITargetTrackingPolicy.d.ts +21 -0
- package/dist/domain/ITencentcloudCertificate.d.ts +5 -0
- package/dist/domain/ITencentcloudHealth.d.ts +18 -0
- package/dist/domain/ITencentcloudInstance.d.ts +4 -0
- package/dist/domain/ITencentcloudLoadBalancer.d.ts +278 -0
- package/dist/domain/ITencentcloudLoadBalancerSourceData.d.ts +171 -0
- package/dist/domain/ITencentcloudScalingPolicy.d.ts +19 -0
- package/dist/domain/ITencentcloudServerGroup.d.ts +43 -0
- package/dist/domain/index.d.ts +11 -0
- package/dist/help/tencentcloud.help.d.ts +1 -0
- package/dist/image/image.reader.d.ts +35 -0
- package/dist/image/index.d.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +553 -0
- package/dist/index.js.map +1 -0
- package/dist/keyPairs/KeyPairsReader.d.ts +4 -0
- package/dist/keyPairs/index.d.ts +1 -0
- package/dist/pipeline/stages/disableCluster/DisableClusterConfig.d.ts +3 -0
- package/dist/pipeline/stages/disableCluster/DisableClusterStageForm.d.ts +3 -0
- package/dist/pipeline/stages/disableCluster/disableClusterStage.d.ts +1 -0
- package/dist/pipeline/stages/disableCluster/disableClusterValidators.d.ts +2 -0
- package/dist/pipeline/stages/rollbackCluster/RollbackClusterConfig.d.ts +3 -0
- package/dist/pipeline/stages/rollbackCluster/RollbackClusterStageForm.d.ts +3 -0
- package/dist/pipeline/stages/rollbackCluster/rollbackClusterStage.d.ts +1 -0
- package/dist/pipeline/stages/rollbackCluster/rollbackClusterValidators.d.ts +2 -0
- package/dist/pipeline/stages/scaleDownCluster/ScaleDownClusterConfig.d.ts +3 -0
- package/dist/pipeline/stages/scaleDownCluster/ScaleDownClusterStageForm.d.ts +3 -0
- package/dist/pipeline/stages/scaleDownCluster/scaleDownClusterStage.d.ts +1 -0
- package/dist/pipeline/stages/scaleDownCluster/scaledownClusterValidators.d.ts +2 -0
- package/dist/pipeline/stages/shrinkCluster/ShrinkClusterConfig.d.ts +3 -0
- package/dist/pipeline/stages/shrinkCluster/ShrinkClusterStageForm.d.ts +3 -0
- package/dist/pipeline/stages/shrinkCluster/shrinkClusterStage.d.ts +1 -0
- package/dist/pipeline/stages/shrinkCluster/shrinkClusterValidators.d.ts +2 -0
- package/dist/reactShims/index.d.ts +2 -0
- package/dist/reactShims/tencentcloud.ngReact.d.ts +8 -0
- package/dist/reactShims/tencentcloud.react.injector.d.ts +7 -0
- package/dist/reactShims/tencentcloud.react.module.d.ts +1 -0
- package/dist/search/searchResultFormatter.d.ts +1 -0
- package/dist/tencentcloud.module.d.ts +7 -0
- package/dist/tencentcloud.settings.d.ts +26 -0
- package/dist/validation/ApplicationNameValidator.d.ts +1 -0
- package/package.json +37 -0
- package/src/domain/IKeyPair.ts +8 -0
- package/src/domain/IScalingPolicy.ts +84 -0
- package/src/domain/IScalingProcess.ts +11 -0
- package/src/domain/ITargetTrackingPolicy.ts +26 -0
- package/src/domain/ITencentcloudCertificate.ts +6 -0
- package/src/domain/ITencentcloudHealth.ts +21 -0
- package/src/domain/ITencentcloudInstance.ts +5 -0
- package/src/domain/ITencentcloudLoadBalancer.ts +326 -0
- package/src/domain/ITencentcloudLoadBalancerSourceData.ts +189 -0
- package/src/domain/ITencentcloudScalingPolicy.ts +23 -0
- package/src/domain/ITencentcloudServerGroup.ts +46 -0
- package/src/domain/index.ts +11 -0
- package/src/help/tencentcloud.help.ts +5 -0
- package/src/image/image.reader.ts +53 -0
- package/src/image/index.ts +1 -0
- package/src/index.ts +2 -0
- package/src/keyPairs/KeyPairsReader.ts +11 -0
- package/src/keyPairs/index.ts +1 -0
- package/src/logo/tencentcloud.icon.svg +24 -0
- package/src/logo/tencentcloud.logo.less +5 -0
- package/src/logo/tencentcloud.logo.svg +53 -0
- package/src/pipeline/stages/disableCluster/DisableClusterConfig.tsx +27 -0
- package/src/pipeline/stages/disableCluster/DisableClusterStageForm.tsx +87 -0
- package/src/pipeline/stages/disableCluster/disableClusterStage.ts +12 -0
- package/src/pipeline/stages/disableCluster/disableClusterValidators.ts +10 -0
- package/src/pipeline/stages/rollbackCluster/RollbackClusterConfig.tsx +27 -0
- package/src/pipeline/stages/rollbackCluster/RollbackClusterStageForm.tsx +74 -0
- package/src/pipeline/stages/rollbackCluster/rollbackClusterStage.ts +12 -0
- package/src/pipeline/stages/rollbackCluster/rollbackClusterValidators.ts +10 -0
- package/src/pipeline/stages/scaleDownCluster/ScaleDownClusterConfig.tsx +27 -0
- package/src/pipeline/stages/scaleDownCluster/ScaleDownClusterStageForm.tsx +102 -0
- package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.ts +12 -0
- package/src/pipeline/stages/scaleDownCluster/scaledownClusterValidators.ts +10 -0
- package/src/pipeline/stages/shrinkCluster/ShrinkClusterConfig.tsx +27 -0
- package/src/pipeline/stages/shrinkCluster/ShrinkClusterStageForm.tsx +104 -0
- package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.ts +12 -0
- package/src/pipeline/stages/shrinkCluster/shrinkClusterValidators.ts +10 -0
- package/src/reactShims/index.ts +2 -0
- package/src/reactShims/tencentcloud.ngReact.ts +21 -0
- package/src/reactShims/tencentcloud.react.injector.ts +14 -0
- package/src/reactShims/tencentcloud.react.module.ts +14 -0
- package/src/search/searchResultFormatter.js +10 -0
- package/src/tencentcloud.module.ts +32 -0
- package/src/tencentcloud.settings.ts +35 -0
- package/src/validation/ApplicationNameValidator.ts +71 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/help/tencentcloud.help.ts","../src/image/image.reader.ts","../src/logo/tencentcloud.logo.svg","../src/pipeline/stages/disableCluster/DisableClusterStageForm.tsx","../src/pipeline/stages/disableCluster/DisableClusterConfig.tsx","../src/pipeline/stages/disableCluster/disableClusterValidators.ts","../src/pipeline/stages/disableCluster/disableClusterStage.ts","../src/pipeline/stages/rollbackCluster/RollbackClusterStageForm.tsx","../src/pipeline/stages/rollbackCluster/RollbackClusterConfig.tsx","../src/pipeline/stages/rollbackCluster/rollbackClusterValidators.ts","../src/pipeline/stages/rollbackCluster/rollbackClusterStage.ts","../src/pipeline/stages/scaleDownCluster/ScaleDownClusterStageForm.tsx","../src/pipeline/stages/scaleDownCluster/ScaleDownClusterConfig.tsx","../src/pipeline/stages/scaleDownCluster/scaledownClusterValidators.ts","../src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.ts","../src/pipeline/stages/shrinkCluster/ShrinkClusterStageForm.tsx","../src/pipeline/stages/shrinkCluster/ShrinkClusterConfig.tsx","../src/pipeline/stages/shrinkCluster/shrinkClusterValidators.ts","../src/pipeline/stages/shrinkCluster/shrinkClusterStage.ts","../src/reactShims/tencentcloud.ngReact.ts","../src/reactShims/tencentcloud.react.injector.ts","../src/reactShims/tencentcloud.react.module.ts","../src/search/searchResultFormatter.js","../src/validation/ApplicationNameValidator.ts","../src/tencentcloud.module.ts","../src/tencentcloud.settings.ts"],"sourcesContent":["import { HelpContentsRegistry } from '@spinnaker/core';\n\nconst helpContents: { [key: string]: string } = {};\n\nObject.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));\n","import { $q } from 'ngimport';\n\nimport { REST } from '@spinnaker/core';\nexport interface ITencentcloudSnapshot {\n diskSize: string;\n diskType: string;\n diskUsage: 'SYSTEM_DISK' | 'DATA_DISK';\n snapshotId: string;\n}\nexport interface ITencentcloudImage {\n accounts: string[];\n images: {\n [region: string]: string[];\n };\n imgIds: {\n [region: string]: string[];\n };\n attributes: {\n createdTime?: string;\n creationDate?: string;\n snapshotSet?: ITencentcloudSnapshot[];\n osPlatform: string;\n };\n imageName: string;\n tags: {\n [tag: string]: string;\n };\n tagsByImageId: {\n [imageId: string]: ITencentcloudImage['tags'];\n };\n}\n\nexport class TencentcloudImageReader {\n public findImages(params: { q: string; region?: string }): PromiseLike<ITencentcloudImage[]> {\n if (!params.q || params.q.length < 3) {\n return $q.when([{ message: 'Please enter at least 3 characters...', disabled: true }]) as any;\n }\n\n return REST('/images/find')\n .query({ ...params, provider: 'tencentcloud' })\n .get()\n .catch(() => [] as ITencentcloudImage[]);\n }\n\n public getImage(name: string, region: string, credentials: string): PromiseLike<ITencentcloudImage> {\n return REST('/images')\n .path(credentials, region, name)\n .query({ provider: 'tencentcloud' })\n .get()\n .then((results: any[]) => (results && results.length ? results[0] : null))\n .catch(() => null as ITencentcloudImage);\n }\n}\n","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3Csvg%20version%3D%221.1%22%20id%3D%22%E5%9B%BE%E5%B1%82_1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%20x%3D%220px%22%20y%3D%220px%22%20%20width%3D%22120px%22%20height%3D%2248px%22%20viewBox%3D%220%200%20120%2048%22%20style%3D%22enable-background%3Anew%200%200%20120%2048%3B%22%20xml%3Aspace%3D%22preserve%22%3E%3Cg%3E%20%3Cg%3E%20%20%3Cpath%20d%3D%22M93.829%2C13.731H81.181v1.83h3.808v6.673h-4.364v1.83h4.364v11.19h2.013v-11.19h4.814V35.02h3.802v-1.831h-1.788V13.731z%20%20%20%20M87.002%2C22.234v-6.673h4.814v6.673H87.002z%22%2F%3E%20%20%3Crect%20x%3D%2258.743%22%20y%3D%2230.136%22%20width%3D%229.979%22%20height%3D%221.83%22%2F%3E%20%20%3Cpath%20d%3D%22M51.944%2C26.749c0%2C3.328-0.269%2C5.854-0.823%2C8.093c-0.058%2C0.207%2C0.004%2C0.263%2C0.113%2C0.263c0.038%2C0%2C1.525%2C0%2C1.835%2C0%20%20%20c0.613-3.075%2C0.693-5.626%2C0.703-7.477h2.565v5.69h-1.821c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h3.257V13.777h-6.22V26.749z%20%20%20%20M53.774%2C25.98V21.6h2.563v4.38H53.774z%20M56.337%2C15.607v4.346h-2.563v-4.346H56.337z%22%2F%3E%20%20%3Cpath%20d%3D%22M69.429%2C21.196h2.457v-1.647h-7.16c0.216-0.526%2C0.41-1.091%2C0.588-1.702h6.123V16.2h-1.794%20%20%20c0.299-1.018%2C0.651-2.219%2C0.672-2.288c0.036-0.122-0.028-0.169-0.107-0.169h-1.558L67.927%2C16.2h-2.202%20%20%20c0.205-0.952%2C0.384-2.007%2C0.547-3.191c0.019-0.137-0.055-0.164-0.146-0.164c-0.073%2C0-1.278%2C0-1.774%2C0%20%20%20c-0.181%2C1.258-0.371%2C2.342-0.614%2C3.355h-1.08l-0.722-2.457h-1.558c-0.079%2C0-0.143%2C0.047-0.107%2C0.169%20%20%20c0.02%2C0.07%2C0.373%2C1.271%2C0.672%2C2.288h-1.747v1.647h4.079c-0.166%2C0.52-0.41%2C1.133-0.67%2C1.702h-3.858v1.647h2.898%20%20%20c-1.168%2C1.659-2.417%2C2.422-2.915%2C2.727c0%2C0.234%2C0%2C1.83%2C0%2C1.884c0%2C0.095%2C0.075%2C0.196%2C0.373%2C0.027%20%20%20c0.542-0.307%2C1.12-0.655%2C1.705-1.087h6.817l-0.058%2C2.467h-5.382l0.082-1.475c0-0.064-0.046-0.111-0.112-0.111%20%20%20c-0.102%2C0-1.721%2C0-1.721%2C0l-0.173%2C3.122c0%2C0.064%2C0.046%2C0.111%2C0.112%2C0.111c0.102%2C0%2C9.285%2C0%2C9.285%2C0v4.454h-4.185%20%20%20c-0.089%2C0-0.157%2C0.058-0.11%2C0.184l0.502%2C1.646h5.807v-7.931h-2.273l0.075-3.203c0.85%2C0.79%2C1.712%2C1.379%2C2.497%2C1.824%20%20%20c0.298%2C0.169%2C0.373%2C0.068%2C0.373-0.027c0-0.054%2C0-1.651%2C0-1.884C71.844%2C23.618%2C70.597%2C22.853%2C69.429%2C21.196z%20M67.188%2C21.196%20%20%20c0.438%2C0.721%2C0.91%2C1.351%2C1.398%2C1.903h-5.991c0.465-0.537%2C0.915-1.163%2C1.335-1.903H67.188z%22%2F%3E%20%20%3Cpath%20d%3D%22M82.457%2C28.864c-0.034%2C0.026-1.742%2C1.32-3.395%2C2.572V19.538h-4.704v2.013h2.704v11.4%20%20%20c-0.644%2C0.488-1.081%2C0.819-1.081%2C0.819l1.105%2C1.459l5.552-4.207c0%2C0%2C0-2.021%2C0-2.073C82.639%2C28.851%2C82.529%2C28.809%2C82.457%2C28.864z%22%20%20%20%2F%3E%20%20%3Cpath%20d%3D%22M77.329%2C17.736c0%2C0%2C2.15%2C0%2C2.2%2C0c0.098%2C0%2C0.137-0.106%2C0.094-0.171c-0.04-0.061-2.775-4.238-2.775-4.238s-2.117%2C0-2.2%2C0%20%20%20c-0.083%2C0-0.144%2C0.096-0.098%2C0.166C74.596%2C13.562%2C77.329%2C17.736%2C77.329%2C17.736z%22%2F%3E%20%20%3Crect%20x%3D%2299.874%22%20y%3D%2214.22%22%20width%3D%2215.888%22%20height%3D%222.013%22%2F%3E%20%20%3Cpath%20d%3D%22M105.637%2C23.841H118v-2.013H97.636v2.013h5.65c-1.167%2C3.064-4.095%2C10.753-4.115%2C10.809%20%20%20c-0.032%2C0.089%2C0.026%2C0.155%2C0.104%2C0.155c0.049%2C0%2C17.523%2C0%2C17.564%2C0c0.083%2C0%2C0.131-0.082%2C0.101-0.16%20%20%20c-0.019-0.049-2.619-6.885-2.619-6.885s-2.103%2C0-2.186%2C0s-0.133%2C0.08-0.105%2C0.153c0.028%2C0.073%2C1.853%2C4.879%2C1.853%2C4.879h-11.646%20%20%20L105.637%2C23.841z%22%2F%3E%20%3C%2Fg%3E%20%3Cg%3E%20%20%3Cpath%20style%3D%22fill%3A%2300A3FF%3B%22%20d%3D%22M39.157%2C33.89c-0.764%2C0.756-2.125%2C1.613-4.361%2C1.689c-1.034%2C0.035-2.241%2C0.039-2.793%2C0.039%20%20%20c-0.603%2C0-5.918%2C0-12.012%2C0c4.37-4.245%2C8.182-7.947%2C8.615-8.367c0.396-0.385%2C1.287-1.237%2C2.056-1.929%20%20%20c1.687-1.519%2C3.206-1.825%2C4.28-1.815c1.683%2C0.016%2C3.214%2C0.703%2C4.308%2C1.813C41.591%2C27.712%2C41.535%2C31.536%2C39.157%2C33.89%20%20%20%20M42.034%2C22.597c-1.795-1.83-4.296-2.983-7.077-2.984c-2.404%2C0-4.474%2C0.829-6.281%2C2.3c-0.788%2C0.641-1.614%2C1.409-2.653%2C2.419%20%20%20c-0.516%2C0.501-15.485%2C15.026-15.485%2C15.026c0.785%2C0.112%2C1.864%2C0.145%2C2.826%2C0.151c0.902%2C0.006%2C18.1%2C0.004%2C18.82%2C0.004%20%20%20c1.449%2C0%2C2.392-0.002%2C3.405-0.076c2.323-0.17%2C4.518-1.022%2C6.292-2.764C45.82%2C32.805%2C45.879%2C26.526%2C42.034%2C22.597z%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%2300C8DC%3B%22%20d%3D%22M17.883%2C21.663c-1.76-1.317-3.729-2.053-5.963-2.05c-2.781%2C0-5.283%2C1.153-7.077%2C2.984%20%20%20c-3.845%2C3.93-3.786%2C10.209%2C0.154%2C14.077c1.582%2C1.553%2C3.498%2C2.398%2C5.541%2C2.684l3.854-3.74c-0.623-0.003-1.518-0.011-2.311-0.038%20%20%20c-2.235-0.076-3.597-0.934-4.361-1.689c-2.379-2.354-2.434-6.178-0.094-8.57c1.094-1.11%2C2.625-1.797%2C4.308-1.813%20%20%20c1.055-0.004%2C2.486%2C0.302%2C4.103%2C1.643c0.772%2C0.64%2C2.486%2C2.147%2C3.239%2C2.825c0.038%2C0.035%2C0.084%2C0.038%2C0.129%2C0.001l2.654-2.589%20%20%20c0.046-0.045%2C0.043-0.105-0.002-0.146C20.781%2C24.088%2C18.972%2C22.474%2C17.883%2C21.663%22%2F%3E%20%20%3Cpath%20style%3D%22fill%3A%23006EFF%3B%22%20d%3D%22M36%2C17.365c-1.831-5.172-6.762-8.879-12.562-8.879c-6.652%2C0-12.165%2C4.892-13.164%2C11.264%20%20%20c0.535-0.09%2C1.085-0.138%2C1.646-0.138c0.781-0.001%2C1.529%2C0.09%2C2.248%2C0.263c0.014%2C0.003%2C0.028%2C0.005%2C0.042%2C0.008%20%20%20c0.901-4.302%2C4.705-7.498%2C9.228-7.498c3.767%2C0%2C7.072%2C2.272%2C8.562%2C5.492c0.023%2C0.051%2C0.063%2C0.067%2C0.104%2C0.056%20%20%20c1.121-0.308%2C2.464-0.487%2C3.762-0.391C35.992%2C17.552%2C36.04%2C17.481%2C36%2C17.365%22%2F%3E%20%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E\"","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport { AccountService, FormikFormField, NgReact, NumberInput, SelectInput, StageConfigField } from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function DisableClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Disable Options\">\n <div className=\"form-inline\">\n Keep the\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n <FormikFormField\n name=\"preferLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingEnabledServerGroups)} enabled.\n </div>\n </StageConfigField>\n </div>\n );\n}\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { DisableClusterStageForm } from './DisableClusterStageForm';\n\nexport function DisableClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <DisableClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import { Registry } from '@spinnaker/core';\n\nimport { DisableClusterConfig } from './DisableClusterConfig';\nimport { validate } from './disableClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'disableCluster',\n key: 'disableCluster',\n cloudProvider: 'tencentcloud',\n component: DisableClusterConfig,\n validateFn: validate,\n});\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport { AccountService, FormikFormField, NgReact, NumberInput, StageConfigField } from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function RollbackClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Rollback Options\">\n <div className=\"row\">\n <div className=\"col-sm-10 col-sm-offset-2\">\n Wait\n <FormikFormField name=\"wait\" required input={(props) => <NumberInput {...props} min={0} />} />\n seconds between regional rollbacks.\n </div>\n <div className=\"col-sm-10 col-sm-offset-2\">\n Consider rollback successful when\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} max={100} />}\n />\n percent of instances are healthy.\n </div>\n </div>\n </StageConfigField>\n </div>\n );\n}\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { RollbackClusterStageForm } from './RollbackClusterStageForm';\n\nexport function RollbackClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <RollbackClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import { Registry } from '@spinnaker/core';\n\nimport { RollbackClusterConfig } from './RollbackClusterConfig';\nimport { validate } from './rollbackClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'rollbackCluster',\n key: 'rollbackCluster',\n cloudProvider: 'tencentcloud',\n component: RollbackClusterConfig,\n validateFn: validate,\n});\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n NgReact,\n NumberInput,\n SelectInput,\n StageConfigField,\n} from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function ScaleDownClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"ScaleDown Options\">\n <div className=\"form-inline\">\n Keep the\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n <FormikFormField\n name=\"preferLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingFullSizeServerGroups)} at current size.\n <p>The remaining server groups will be scaled down to zero instances.</p>\n </div>\n </StageConfigField>\n <div className=\"form-group\">\n <FormikFormField\n name=\"allowScaleDownActive\"\n input={(props) => <CheckboxInput {...props} text=\"Allow scale down of active server groups\" />}\n />\n </div>\n </div>\n );\n}\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { ScaleDownClusterStageForm } from './ScaleDownClusterStageForm';\n\nexport function ScaleDownClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <ScaleDownClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import { Registry } from '@spinnaker/core';\n\nimport { ScaleDownClusterConfig } from './ScaleDownClusterConfig';\nimport { validate } from './scaledownClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'scaleDownCluster',\n key: 'scaleDownCluster',\n cloudProvider: 'tencentcloud',\n component: ScaleDownClusterConfig,\n validateFn: validate,\n});\n","import React from 'react';\n\nimport type { IAccount, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n NgReact,\n NumberInput,\n SelectInput,\n StageConfigField,\n} from '@spinnaker/core';\n\nconst { useEffect, useState } = React;\nconst { AccountRegionClusterSelector } = NgReact;\n\nexport function ShrinkClusterStageForm({ application, formik, pipeline }: IFormikStageConfigInjectedProps) {\n const stage = formik.values;\n const { setFieldValue } = formik;\n const [accounts, setAccounts] = useState([]);\n\n useEffect(() => {\n AccountService.listAccounts('tencentcloud').then((accounts: IAccount[]) => {\n setAccounts(accounts);\n });\n\n if (\n stage.isNew &&\n application?.attributes?.platformHealthOnlyShowOverride &&\n application?.attributes?.platformHealthOnly\n ) {\n setFieldValue('interestingHealthProviderNames', ['Tencentcloud']);\n }\n\n if (!stage.credentials && application?.defaultCredentials?.tencentcloud) {\n setFieldValue('credentials', application?.defaultCredentials?.tencentcloud);\n }\n\n if (!stage?.regions?.length && application?.defaultRegions?.tencentcloud) {\n setFieldValue('regions', [...stage.regions, application?.defaultRegions?.tencentcloud]);\n }\n\n if (stage.remainingEnabledServerGroups === undefined) {\n setFieldValue('remainingEnabledServerGroups', 1);\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n setFieldValue('preferLargerOverNewer', 'false');\n }\n }, []);\n\n const pluralize = function (str: string, val: string | number) {\n if (val === 1) {\n return str;\n }\n return str + 's';\n };\n\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n application={application}\n clusterField=\"cluster\"\n component={stage}\n accounts={accounts}\n />\n )}\n <StageConfigField label=\"Shrink Options\">\n <div className=\"form-inline\">\n Shrink to\n <FormikFormField\n name=\"remainingEnabledServerGroups\"\n required\n input={(props) => <NumberInput {...props} min={0} />}\n />\n {pluralize('server group', stage.shrinkToSize)}, keeping the\n <FormikFormField\n name=\"retainLargerOverNewer\"\n required\n input={(props) => (\n <SelectInput\n options={[\n { label: 'largest', value: 'true' },\n { label: 'newest', value: 'false' },\n ]}\n {...props}\n />\n )}\n />\n {pluralize('server group', stage.remainingEnabledServerGroups)} enabled.\n </div>\n </StageConfigField>\n <div className=\"form-group\">\n <div className=\"col-md-offset-3 col-md-6 checkbox\">\n <FormikFormField\n name=\"allowDeleteActive\"\n input={(props) => <CheckboxInput {...props} text=\"Allow deletion of active server groups\" />}\n />\n </div>\n </div>\n </div>\n );\n}\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig } from '@spinnaker/core';\n\nimport { ShrinkClusterStageForm } from './ShrinkClusterStageForm';\n\nexport function ShrinkClusterConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n cloudProvider: 'tencentcloud',\n regions: stage.regions || [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n render={(props) => <ShrinkClusterStageForm {...props} />}\n />\n );\n}\n","import type { IContextualValidator, IStage } from '@spinnaker/core';\nimport { FormValidator } from '@spinnaker/core';\n\nexport const validate: IContextualValidator = (stage: IStage) => {\n const formValidator = new FormValidator(stage);\n formValidator.field('credentials', 'Account').required();\n formValidator.field('regions', 'Regions').required();\n formValidator.field('cluster', 'Cluster').required();\n return formValidator.validateForm();\n};\n","import { Registry } from '@spinnaker/core';\n\nimport { ShrinkClusterConfig } from './ShrinkClusterConfig';\nimport { validate } from './shrinkClusterValidators';\n\nRegistry.pipeline.registerStage({\n provides: 'shrinkCluster',\n key: 'shrinkCluster',\n cloudProvider: 'tencentcloud',\n component: ShrinkClusterConfig,\n validateFn: validate,\n});\n","import IInjectorService = angular.auto.IInjectorService;\n\nimport { ReactInject } from '@spinnaker/core';\n\n// prettier-ignore\nexport class TencentcloudNgReactInjector extends ReactInject {\n public $injectorProxy = {} as IInjectorService;\n\n // Reactified components\n\n public initialize($injector: IInjectorService) {\n const realInjector: { [key: string]: Function } = $injector as any;\n const proxyInjector: { [key: string]: Function } = this.$injectorProxy as any;\n\n Object.keys($injector)\n .filter(key => typeof realInjector[key] === 'function')\n .forEach(key => proxyInjector[key] = realInjector[key].bind(realInjector));\n }\n}\n\nexport const TencentcloudNgReact = new TencentcloudNgReactInjector();\n","import IInjectorService = angular.auto.IInjectorService;\n\nimport { ReactInject } from '@spinnaker/core';\n\n// prettier-ignore\nexport class TencentcloudReactInject extends ReactInject {\n\n\n public initialize($injector: IInjectorService) {\n this.$injector = $injector;\n }\n}\n\nexport const TencentcloudReactInjector: TencentcloudReactInject = new TencentcloudReactInject();\n","import { module } from 'angular';\n\nimport { TencentcloudNgReact } from './tencentcloud.ngReact';\nimport { TencentcloudReactInjector } from './tencentcloud.react.injector';\n\nexport const TENCENTCLOUD_REACT_MODULE = 'spinnaker.tencentcloud.react';\nmodule(TENCENTCLOUD_REACT_MODULE, []).run([\n '$injector',\n function ($injector: any) {\n // Make angular services importable and (TODO when relevant) convert angular components to react\n TencentcloudReactInjector.initialize($injector);\n TencentcloudNgReact.initialize($injector);\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nexport const TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER = 'spinnaker.tencentcloud.search.searchResultFormatter';\nmodule(TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER, []).factory('tencentcloudSearchResultFormatter', function () {\n return {\n securityGroups: function (entry) {},\n };\n});\n","import type { IApplicationNameValidator } from '@spinnaker/core';\nimport { ApplicationNameValidator, FirewallLabels } from '@spinnaker/core';\n\nclass TencentcloudApplicationNameValidator implements IApplicationNameValidator {\n private validateSpecialCharacters(name: string, errors: string[]): void {\n const pattern = /^[a-zA-Z_0-9.]*$/g;\n if (!pattern.test(name)) {\n errors.push('Only dot(.) and underscore(_) special characters are allowed.');\n }\n }\n\n private validateLoadBalancerCharacters(name: string, warnings: string[]) {\n if (name.includes('.') || name.includes('_')) {\n warnings.push(`If the application's name contains an underscore(_) or dot(.),\n you will not be able to create a load balancer,\n preventing it from being used as a front end service.`);\n }\n }\n\n private validateLength(name: string, warnings: string[], errors: string[]) {\n if (name.length > 250) {\n errors.push('The maximum length for an application in Tencentcloud is 250 characters.');\n return;\n }\n if (name.length > 240) {\n if (name.length >= 248) {\n warnings.push(\n `You will not be able to include a stack or detail field for clusters or ${FirewallLabels.get('firewalls')}.`,\n );\n } else {\n const remaining = 248 - name.length;\n warnings.push(`If you plan to include a stack or detail field for clusters, you will only\n have ~${remaining} characters to do so.`);\n }\n }\n if (name.length > 20) {\n if (name.length > 32) {\n warnings.push(`You will not be able to create an Tencentcloud load balancer for this application if the\n application's name is longer than 32 characters (currently: ${name.length} characters)`);\n } else {\n if (name.length >= 30) {\n warnings.push(`If you plan to create load balancers for this application, be aware that the character limit\n for load balancer names is 32 (currently: ${name.length} characters). With separators (\"-\"), you will not\n be able to add a stack and detail field to any load balancer.`);\n } else {\n const remaining = 30 - name.length;\n warnings.push(`If you plan to create load balancers for this application, be aware that the character limit\n for load balancer names is 32. You will only have ~${remaining} characters to add a stack or detail\n field to any load balancer.`);\n }\n }\n }\n }\n\n public validate(name = '') {\n const warnings: string[] = [];\n const errors: string[] = [];\n\n if (name.length) {\n this.validateSpecialCharacters(name, errors);\n this.validateLoadBalancerCharacters(name, warnings);\n this.validateLength(name, warnings, errors);\n }\n\n return {\n warnings,\n errors,\n };\n }\n}\nApplicationNameValidator.registerValidator('tencentcloud', new TencentcloudApplicationNameValidator());\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { CloudProviderRegistry, DeploymentStrategyRegistry } from '@spinnaker/core';\n\nimport './help/tencentcloud.help';\nimport { TencentcloudImageReader } from './image';\nimport logo from './logo/tencentcloud.logo.svg';\n// load pipeline stage\nimport './pipeline/stages/disableCluster/disableClusterStage';\nimport './pipeline/stages/rollbackCluster/rollbackClusterStage';\nimport './pipeline/stages/scaleDownCluster/scaleDownClusterStage';\nimport './pipeline/stages/shrinkCluster/shrinkClusterStage';\nimport { TENCENTCLOUD_REACT_MODULE } from './reactShims/tencentcloud.react.module';\nimport { TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER } from './search/searchResultFormatter';\nimport './validation/ApplicationNameValidator';\n\nexport const TENCENTCLOUD_MODULE = 'spinnaker.tencentcloud';\nmodule(TENCENTCLOUD_MODULE, [TENCENTCLOUD_REACT_MODULE, TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER]).config(() => {\n CloudProviderRegistry.registerProvider('tencentcloud', {\n name: 'tencentcloud',\n logo: {\n path: logo,\n },\n image: {\n reader: TencentcloudImageReader,\n },\n });\n});\n\nDeploymentStrategyRegistry.registerProvider('tencentcloud', ['custom', 'redblack', 'rollingpush', 'rollingredblack']);\n","import type { IProviderSettings } from '@spinnaker/core';\nimport { SETTINGS } from '@spinnaker/core';\n\nexport interface IClassicLaunchAllowlist {\n region: string;\n credentials: string;\n}\n\nexport interface ITencentcloudProviderSettings extends IProviderSettings {\n defaults: {\n account?: string;\n region?: string;\n subnetType?: string;\n vpc?: string;\n };\n defaultSecurityGroups?: string[];\n loadBalancers?: {\n inferInternalFlagFromSubnet: boolean;\n certificateTypes?: string[];\n };\n classicLaunchLockout?: number;\n classicLaunchAllowlist?: IClassicLaunchAllowlist[];\n metrics?: {\n customNamespaces?: string[];\n };\n minRootVolumeSize?: number;\n disableSpotPricing?: boolean;\n}\n\nexport const TencentcloudProviderSettings: ITencentcloudProviderSettings = (SETTINGS.providers\n .tencentcloud as ITencentcloudProviderSettings) || { defaults: {} };\n\nif (TencentcloudProviderSettings) {\n TencentcloudProviderSettings.resetToOriginal = SETTINGS.resetProvider('tencentcloud');\n}\n"],"names":["useEffect","useState","AccountRegionClusterSelector","validate"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './KeyPairsReader';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="angular" />
|
|
2
|
+
import IInjectorService = angular.auto.IInjectorService;
|
|
3
|
+
import { ReactInject } from '@spinnaker/core';
|
|
4
|
+
export declare class TencentcloudNgReactInjector extends ReactInject {
|
|
5
|
+
$injectorProxy: IInjectorService;
|
|
6
|
+
initialize($injector: IInjectorService): void;
|
|
7
|
+
}
|
|
8
|
+
export declare const TencentcloudNgReact: TencentcloudNgReactInjector;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="angular" />
|
|
2
|
+
import IInjectorService = angular.auto.IInjectorService;
|
|
3
|
+
import { ReactInject } from '@spinnaker/core';
|
|
4
|
+
export declare class TencentcloudReactInject extends ReactInject {
|
|
5
|
+
initialize($injector: IInjectorService): void;
|
|
6
|
+
}
|
|
7
|
+
export declare const TencentcloudReactInjector: TencentcloudReactInject;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TENCENTCLOUD_REACT_MODULE = "spinnaker.tencentcloud.react";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const TENCENTCLOUD_SEARCH_SEARCHRESULTFORMATTER: "spinnaker.tencentcloud.search.searchResultFormatter";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import './help/tencentcloud.help';
|
|
2
|
+
import './pipeline/stages/disableCluster/disableClusterStage';
|
|
3
|
+
import './pipeline/stages/rollbackCluster/rollbackClusterStage';
|
|
4
|
+
import './pipeline/stages/scaleDownCluster/scaleDownClusterStage';
|
|
5
|
+
import './pipeline/stages/shrinkCluster/shrinkClusterStage';
|
|
6
|
+
import './validation/ApplicationNameValidator';
|
|
7
|
+
export declare const TENCENTCLOUD_MODULE = "spinnaker.tencentcloud";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { IProviderSettings } from '@spinnaker/core';
|
|
2
|
+
export interface IClassicLaunchAllowlist {
|
|
3
|
+
region: string;
|
|
4
|
+
credentials: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ITencentcloudProviderSettings extends IProviderSettings {
|
|
7
|
+
defaults: {
|
|
8
|
+
account?: string;
|
|
9
|
+
region?: string;
|
|
10
|
+
subnetType?: string;
|
|
11
|
+
vpc?: string;
|
|
12
|
+
};
|
|
13
|
+
defaultSecurityGroups?: string[];
|
|
14
|
+
loadBalancers?: {
|
|
15
|
+
inferInternalFlagFromSubnet: boolean;
|
|
16
|
+
certificateTypes?: string[];
|
|
17
|
+
};
|
|
18
|
+
classicLaunchLockout?: number;
|
|
19
|
+
classicLaunchAllowlist?: IClassicLaunchAllowlist[];
|
|
20
|
+
metrics?: {
|
|
21
|
+
customNamespaces?: string[];
|
|
22
|
+
};
|
|
23
|
+
minRootVolumeSize?: number;
|
|
24
|
+
disableSpotPricing?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare const TencentcloudProviderSettings: ITencentcloudProviderSettings;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@spinnaker/tencentcloud",
|
|
3
|
+
"license": "Apache-2.0",
|
|
4
|
+
"version": "0.0.0-main-2",
|
|
5
|
+
"module": "dist/index.js",
|
|
6
|
+
"typings": "dist/index.d.ts",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public",
|
|
9
|
+
"registry": "https://registry.npmjs.org"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"clean": "shx rm -rf dist",
|
|
13
|
+
"prepublishOnly": "npm run build",
|
|
14
|
+
"build": "npm run clean && spinnaker-scripts build",
|
|
15
|
+
"dev": "spinnaker-scripts start",
|
|
16
|
+
"dev:push": "spinnaker-scripts start --push",
|
|
17
|
+
"lib": "npm run build"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@spinnaker/core": "^0.29.1",
|
|
21
|
+
"angular": "1.6.10",
|
|
22
|
+
"lodash": "^4.17.19",
|
|
23
|
+
"ngimport": "^0.6.0",
|
|
24
|
+
"react": "~16.14.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@spinnaker/eslint-plugin": "^3.0.2",
|
|
28
|
+
"@spinnaker/scripts": "^0.4.0",
|
|
29
|
+
"@types/angular": "1.6.26",
|
|
30
|
+
"@types/lodash": "4.14.64",
|
|
31
|
+
"@types/node": "7.0.5",
|
|
32
|
+
"@types/react": "16.14.10",
|
|
33
|
+
"shx": "0.3.3",
|
|
34
|
+
"typescript": "4.3.5"
|
|
35
|
+
},
|
|
36
|
+
"gitHead": "41637c82dc23fbf1195173a93611a08000fc0e53"
|
|
37
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { IScalingPolicyAlarmView } from './ITencentcloudScalingPolicy';
|
|
2
|
+
|
|
3
|
+
export interface IScalingPolicyAlarm {
|
|
4
|
+
dimensions?: any[];
|
|
5
|
+
namespace?: string;
|
|
6
|
+
alarmName?: string;
|
|
7
|
+
alarmArn?: string;
|
|
8
|
+
metricName: string;
|
|
9
|
+
statistic: AlarmStatisticType;
|
|
10
|
+
period: number;
|
|
11
|
+
threshold: number;
|
|
12
|
+
comparisonOperator: AlarmComparisonOperator;
|
|
13
|
+
okactions?: string[];
|
|
14
|
+
insufficientDataActions?: string[];
|
|
15
|
+
alarmActions?: string[];
|
|
16
|
+
continuousTime?: number;
|
|
17
|
+
alarmDescription?: string;
|
|
18
|
+
unit?: StandardUnitType;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export type ScalingPolicyAdjustmentType = 'CHANGE_IN_CAPACITY' | 'EXACT_CAPACITY' | 'PERCENT_CHANGE_IN_CAPACITY';
|
|
22
|
+
|
|
23
|
+
export type MetricAggregationType = 'MINIMUM' | 'MAXIMUM' | 'AVERAGE';
|
|
24
|
+
|
|
25
|
+
export type AlarmComparisonOperator =
|
|
26
|
+
| 'GREATER_THAN_OR_EQUAL_TO'
|
|
27
|
+
| 'GREATER_THAN'
|
|
28
|
+
| 'LESS_THAN_OR_EQUAL_TO'
|
|
29
|
+
| 'LESS_THAN';
|
|
30
|
+
|
|
31
|
+
export type AlarmStatisticType = 'SampleCount' | 'AVERAGE' | 'Sum' | 'MINIMUM' | 'MAXIMUM';
|
|
32
|
+
|
|
33
|
+
export type StandardUnitType =
|
|
34
|
+
| 'Seconds'
|
|
35
|
+
| 'Microseconds'
|
|
36
|
+
| 'Milliseconds'
|
|
37
|
+
| 'Bytes'
|
|
38
|
+
| 'Kilobytes'
|
|
39
|
+
| 'Megabytes'
|
|
40
|
+
| 'Gigabytes'
|
|
41
|
+
| 'Terabytes'
|
|
42
|
+
| 'Bits'
|
|
43
|
+
| 'Kilobits'
|
|
44
|
+
| 'Megabits'
|
|
45
|
+
| 'Gigabits'
|
|
46
|
+
| 'Terabits'
|
|
47
|
+
| 'Percent'
|
|
48
|
+
| 'Count'
|
|
49
|
+
| 'BytesSecond'
|
|
50
|
+
| 'KilobytesSecond'
|
|
51
|
+
| 'MegabytesSecond'
|
|
52
|
+
| 'GigabytesSecond'
|
|
53
|
+
| 'TerabytesSecond'
|
|
54
|
+
| 'BitsSecond'
|
|
55
|
+
| 'KilobitsSecond'
|
|
56
|
+
| 'MegabitsSecond'
|
|
57
|
+
| 'GigabitsSecond'
|
|
58
|
+
| 'TerabitsSecond'
|
|
59
|
+
| 'CountSecond'
|
|
60
|
+
| 'None';
|
|
61
|
+
|
|
62
|
+
export interface IStepAdjustment {
|
|
63
|
+
metricIntervalLowerBound?: number;
|
|
64
|
+
metricIntervalUpperBound?: number;
|
|
65
|
+
adjustmentValue?: number;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface IScalingPolicy {
|
|
69
|
+
alarms?: IScalingPolicyAlarmView[];
|
|
70
|
+
policyARN?: string;
|
|
71
|
+
policyName?: string;
|
|
72
|
+
policyType?: string;
|
|
73
|
+
adjustmentType?: ScalingPolicyAdjustmentType;
|
|
74
|
+
metricAlarm: IScalingPolicyAlarm;
|
|
75
|
+
autoScalingPolicyId?: string;
|
|
76
|
+
stepAdjustments?: IStepAdjustment[]; // step
|
|
77
|
+
metricAggregationType?: MetricAggregationType; // step
|
|
78
|
+
estimatedInstanceWarmup?: number; // step
|
|
79
|
+
|
|
80
|
+
minAdjustmentStep?: number; // simple
|
|
81
|
+
cooldown?: number; // simple
|
|
82
|
+
minAdjustmentMagnitude?: number; // simple
|
|
83
|
+
adjustmentValue?: number; // simple
|
|
84
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AlarmStatisticType, IScalingPolicy } from './IScalingPolicy';
|
|
2
|
+
|
|
3
|
+
export interface ITargetTrackingPolicy extends IScalingPolicy {
|
|
4
|
+
autoScalingGroupName?: string;
|
|
5
|
+
targetTrackingConfiguration: ITargetTrackingConfiguration;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface ITargetTrackingConfiguration {
|
|
9
|
+
customizedMetricSpecification?: ICustomizedMetricSpecification;
|
|
10
|
+
predefinedMetricSpecification?: IPredefinedMetricSpecification;
|
|
11
|
+
disableScaleIn?: boolean;
|
|
12
|
+
targetValue: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ICustomizedMetricSpecification {
|
|
16
|
+
metricName: string;
|
|
17
|
+
namespace: string;
|
|
18
|
+
dimensions: any[];
|
|
19
|
+
statistic: AlarmStatisticType;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface IPredefinedMetricSpecification {
|
|
23
|
+
predefinedMetricType: PredefinedMetricType;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type PredefinedMetricType = 'ASGAverageCPUUtilization' | 'ASGAverageNetworkIn' | 'ASGAverageNetworkOut';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { IHealth } from '@spinnaker/core';
|
|
2
|
+
|
|
3
|
+
import type { ITargetGroup } from '.';
|
|
4
|
+
|
|
5
|
+
export interface ITencentcloudHealth extends IHealth {
|
|
6
|
+
targetGroups: ITargetGroup[];
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface ITencentcloudHealthCheck {
|
|
10
|
+
healthSwitch: number;
|
|
11
|
+
timeOut: number;
|
|
12
|
+
intervalTime: number;
|
|
13
|
+
healthNum: number;
|
|
14
|
+
unHealthNum: number;
|
|
15
|
+
httpCode?: number;
|
|
16
|
+
httpCheckPath?: string;
|
|
17
|
+
httpCheckDomain?: string;
|
|
18
|
+
httpCheckMethod?: string;
|
|
19
|
+
showAdvancedSetting: boolean;
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
}
|