René's URL Explorer Experiment


Title: Feature: Dynamic Secondary Storage Selectors · Issue #7654 · apache/cloudstack · GitHub

Open Graph Title: Feature: Dynamic Secondary Storage Selectors · Issue #7654 · apache/cloudstack

X Title: Feature: Dynamic Secondary Storage Selectors · Issue #7654 · apache/cloudstack

Description: ISSUE TYPE Feature Idea COMPONENT NAME API CLOUDSTACK VERSION 4.18/Main SUMMARY Currently, ACS does not allow resources such as ISOs, Volumes, Snapshots, and Templates to be directed to a specific purpose secondary storage. Thus, operato...

Open Graph Description: ISSUE TYPE Feature Idea COMPONENT NAME API CLOUDSTACK VERSION 4.18/Main SUMMARY Currently, ACS does not allow resources such as ISOs, Volumes, Snapshots, and Templates to be directed to a specific ...

X Description: ISSUE TYPE Feature Idea COMPONENT NAME API CLOUDSTACK VERSION 4.18/Main SUMMARY Currently, ACS does not allow resources such as ISOs, Volumes, Snapshots, and Templates to be directed to a specific ...

Opengraph URL: https://github.com/apache/cloudstack/issues/7654

X: @github

direct link

Domain: github.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Feature: Dynamic Secondary Storage Selectors","articleBody":"##### ISSUE TYPE\r\n * Feature Idea\r\n\r\n##### COMPONENT NAME\r\n~~~\r\nAPI\r\n~~~\r\n\r\n##### CLOUDSTACK VERSION\r\n\u003c!--\r\nNew line separated list of affected versions, commit ID for issues on main branch.\r\n--\u003e\r\n\r\n~~~\r\n4.18/Main\r\n~~~\r\n\r\n##### SUMMARY\r\n\r\nCurrently, ACS does not allow resources such as ISOs, Volumes, Snapshots, and Templates to be directed to a specific purpose secondary storage. Thus, operators are unable to determine to which secondary storage a given resource will be allocated. This specification aims to extend ACS for operators to be able to direct these resources to a specific secondary storage using a user-defined rule.\r\n\r\n## Table of contents\r\n- [1. Proposed changes](#proposed-changes)\r\n- [2. New APIs](#new-api-proposal)\r\n    - [2.1. `createSecondaryStorageSelector` API](#createSecondaryStorageSelector-API)\r\n    - [2.2. `updateSecondaryStorageSelector` API](#updateSecondaryStorageSelector-API)\r\n    - [2.3. `removeSecondaryStorageSelector` API](#removeSecondaryStorageSelector-API)\r\n    - [2.4. `listSecondaryStorageSelectors` API](#listSecondaryStorageSelectors-API)\r\n    - [2.5. Variables available for the heuristic rules](#variables)\r\n    - [2.6. Examples](#examples)\r\n\r\n## \u003csection id=\"proposed-changes\"\u003e1. Proposed changes\u003c/section\u003e\r\n\r\nThis specification proposes to change the way ACS defines which secondary storage will be used to store some resources. The intent is to make the Management Server select a secondary storage based on rules written in JavaScript (JS) that will only affect new resources, i.e. resources previously allocated on secondary storage will not be changed. The proposed changes are described in the following subsections.\r\n\r\n\r\n## \u003csection id=\"new-api-proposal\"\u003e2. New API proposal\u003c/section\u003e\r\n\r\nCreate a new API (`createSecondaryStorageSelector`) which will have as mandatory parameters: (`zoneid: String`, `purpose: String`, `heuristic_rule: String`), the created rule will determine, based on the return of the `heuristic_rule`, in which secondary storage a given resource will be allocated.\r\n  \r\nRegarding the API parameters:\r\n\r\n- `zoneid`: Required, since all configurations will only be in the zone scope;\r\n- `purpose`: Required, this parameter will determine the purpose for which the heuristic was created, the values accepted by this parameter will be: `VOLUME`, `SNAPSHOT`, `ISO`, `TEMPLATE`;\r\n- `heuristic_rule`: A script, written in JS, to determine the secondary storage where the resource will be allocated. This script will take the following attributes from the secondary storage as input: `id`, `disksizeused`, `protocol`. For Volumes, we will take the `size` and `format` attributes, for Snapshots we will take the `hypervisor_type` and `size` attributes and, for Templates we will take the `format` and `hypervisor_type`.\r\n\r\nFurthermore, we propose three additional APIs, one to update a created heuristic (`updateSecondaryStorageSelector`), that will allow operators to edit the defined `heuristic_rule`; the second API (`removeSecondaryStorageSelector`) to disable a previous created heuristic, and the third to list heuristics created by operators which were defined in a zone (`listSecondaryStorageSelectors`). The image below presents an overview of the proposed changes.\r\n\r\n\u003cimg src=\"https://res.cloudinary.com/sc-clouds/image/upload/v1686935719/specs/dynamic-secondary-storage-selection/dsss_c62ebu.png\"\r\n    alt=\"Overview of the proposed changes\"\r\n    style=\"width: 70%;\r\n    height: auto;\r\n    display: block;\r\n    margin-left: auto;\r\n    margin-right: auto;\"\u003e\r\n\r\nTo persist the information about the heuristic, a new table (`heuristics`) will be created in the `cloud` database. Which will have the following columns:\r\n\r\n| **Field**            | **Type**     | **Required** | **Use**                                                                                                                                                                                  |\r\n|:--------------------:|:------------:|:------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|\r\n| uuid                 | varchar(40)  | Yes          | A unique identifier of the heuristic.                                                                                                                                                    |\r\n| name                 | text         | Yes          | A unique name for the heuristic.                                                                                                                                                         |\r\n| description          | text         | No           | Description of the heuristic.                                                                                                                                                            |\r\n| zone_id              | bigint(20)   | Yes          | Foreign key to the `cloud.data_center` table.                                                                                                                                            |\r\n| purpose              | varchar(255) | Yes          | Whether the heuristic referenced was created with the purpose to manage resources of type: `VOLUME`, `TEMPLATE`, `ISO`, or `SNAPSHOT` to be directed to a specific secondary storage.    |\r\n| heuristic_rule       | text         | Yes          | Script implemented in JS that will determine to which secondary storage a given resource will be allocated.                                                                              |\r\n| created              | datetime     | Yes          | Any date from the current date. If this parameter is not informed, the default value will be the current date.                                                                           |\r\n| removed              | datetime     | No           | When the heuristic was removed.                                                                                                                                                          |\r\n\r\n\r\n## \u003csection id=\"createSecondaryStorageSelector-API\"\u003e2.1 `createSecondaryStorageSelector` API\u003c/section\u003e\r\nThe API `createSecondaryStorageSelector` will have three parameters: `zoneid`, `purpose` and `heuristic_rule`. The return of the script `heuristic_rule` will determine where the resource defined in the `purpose` parameter will be allocated for download or upload resources. The image below presents the flowchart for this API.\r\n\r\n\u003cimg src=\"https://res.cloudinary.com/sc-clouds/image/upload/v1679941242/specs/dynamic-secondary-storage-selection/createSecondaryStorageSelector_lqrvht.png\"\r\n    alt=\"Flow chart createSecondaryStorageSelector API\"\r\n    style=\"width: 70%;\r\n    height: auto;\r\n    display: block;\r\n    margin-left: auto;\r\n    margin-right: auto;\"\u003e\r\n\r\n## \u003csection id=\"updateSecondaryStorageSelector-API\"\u003e2.2 `updateSecondaryStorageSelector` API\u003c/section\u003e\r\nThe API `updateSecondaryStorageSelector` will have two parameters: `uuid` and `heuristic_rule`. This API will update the heuristic defined by the given `uuid` with the new attribute `heuristic_rule`. The image below presents the flowchart for this API.\r\n\r\n\u003cimg src=\"https://res.cloudinary.com/sc-clouds/image/upload/v1679941242/specs/dynamic-secondary-storage-selection/updateSecondaryStorageSelector_jk7mq6.png\"\r\n    alt=\"Flow chart updateSecondaryStorageSelector API\"\r\n    style=\"width: 70%;\r\n    height: auto;\r\n    display: block;\r\n    margin-left: auto;\r\n    margin-right: auto;\"\u003e\r\n\r\n## \u003csection id=\"removeSecondaryStorageSelector-API\"\u003e2.3 `removeSecondaryStorageSelector` API\u003c/section\u003e\r\nThe API `removeSecondaryStorageSelector` will have 1 parameter: `uuid`. The image below presents the flowchart for this API.\r\n\r\n\u003cimg src=\"https://res.cloudinary.com/sc-clouds/image/upload/v1679941242/specs/dynamic-secondary-storage-selection/removeSecondaryStorageSelector_xzt9xx.png\"\r\n    alt=\"Flow chart removeSecondaryStorageSelector API\"\r\n    style=\"width: 70%;\r\n    height: auto;\r\n    display: block;\r\n    margin-left: auto;\r\n    margin-right: auto;\"\u003e\r\n\r\n## \u003csection id=\"listSecondaryStorageSelectors-API\"\u003e2.4 `listSecondaryStorageSelectors` API\u003c/section\u003e\r\nThe API `listSecondaryStorageSelectors` will have 2 parameters: `zone_uuid` and `purpose`. The operator can give a valid purpose and a `zone_uuid`, so that the list of active heuristics will be filtered with the given purpose and zone. The image below presents the flowchart for this API.\r\n\r\n\u003cimg src=\"https://res.cloudinary.com/sc-clouds/image/upload/v1679941242/specs/dynamic-secondary-storage-selection/listSecondaryStorageSelectors_x8ryd3.png\"\r\n    alt=\"Flow chart listSecondaryStorageSelectors API\"\r\n    style=\"width: 70%;\r\n    height: auto;\r\n    display: block;\r\n    margin-left: auto;\r\n    margin-right: auto;\"\u003e\r\n\r\n## \u003csection id=\"variables\"\u003e 2.5 Variables available for the heuristic rules\u003c/section\u003e \r\n\r\nThe table below presents the possible values for each resource when executing the JS rule. The variables of the secondary storage are available to all types of resources; whereas, the variables for snapshots, ISOs, templates and volumes are only available for each respective resource types, according to the `purpose` parameter of the API `createSecondaryStorageSelector`.\r\n\r\n\u003ctable\u003e\r\n\u003cthead\u003e\r\n  \u003ctr\u003e\r\n    \u003cth\u003eResource\u003c/th\u003e\r\n    \u003cth\u003eVariables\u003c/th\u003e\r\n  \u003c/tr\u003e\r\n\u003c/thead\u003e\r\n\u003ctbody\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd rowspan=\"5\"\u003eSecondary Storage\u003c/td\u003e\r\n    \u003ctd\u003eid\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003ename\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003eusedDiskSize\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003etotalDiskSize\u003cbr\u003e\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003eprotocol\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd rowspan=\"3\"\u003eSnapshot\u003c/td\u003e\r\n    \u003ctd\u003esize\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003ehypervisorType\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003ename\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd rowspan=\"4\"\u003eISO/Template\u003c/td\u003e\r\n    \u003ctd\u003eformat\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003ehypervisorType\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003etemplateType\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003ename\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd rowspan=\"2\"\u003eVolume\u003c/td\u003e\r\n    \u003ctd\u003esize\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003eformat\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd rowspan=\"4\"\u003eAccount\u003c/td\u003e\r\n    \u003ctd\u003eid\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003ename\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003edomain.id\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n  \u003ctr\u003e\r\n    \u003ctd\u003edomain.name\u003c/td\u003e\r\n  \u003c/tr\u003e\r\n\u003c/tbody\u003e\r\n\u003c/table\u003e\r\n\r\n## \u003csection id=\"examples\"\u003e 2.6 Examples\u003c/section\u003e \r\n\r\n1. Allocate a resource type to a specific secondary storage.\r\n```js\r\nfunction findStorageWithSpecificId(pool) {\r\n\treturn pool.id === '7432f961-c602-4e8e-8580-2496ffbbc45d';\r\n}\r\n\r\nsecondaryStorages.filter(findStorageWithSpecificId)[0].id\r\n```\r\n2. Dedicate storage pools for a type of template format.\r\n```js\r\nfunction directToDedicatedQCOW2Pool(pool) {\r\n  return pool.id === '7432f961-c602-4e8e-8580-2496ffbbc45d';\r\n}\r\n\r\nfunction directToDedicatedVHDPool(pool) {\r\n  return pool.id === '1ea0109a-299d-4e37-8460-3e9823f9f25c';\r\n}\r\n\r\nif (template.format === 'QCOW2') {\r\n  secondaryStorages.filter(directToDedicatedQCOW2Pool)[0].id\r\n} else if (template.format === 'VHD') {\r\n  secondaryStorages.filter(directToDedicatedVHDPool)[0].id\r\n}\r\n```\r\n3. Direct snapshot of volumes with the KVM hypervisor to a specific secondary storage.\r\n```js\r\nif (snapshot.hypervisorType === 'KVM') {\r\n  '7432f961-c602-4e8e-8580-2496ffbbc45d';\r\n}\r\n```\r\n4. Direct resources to a specific domain:\r\n```js\r\nif (account.domain.id == '52d83793-26de-11ec-8dcf-5254005dcdac') {\r\n  '1ea0109a-299d-4e37-8460-3e9823f9f25c'\r\n} else if (account.domain.id == 'c1186146-5ceb-4901-94a1-dd1d24bd849d') {\r\n  '7432f961-c602-4e8e-8580-2496ffbbc45d'\r\n}\r\n```","author":{"url":"https://github.com/BryanMLima","@type":"Person","name":"BryanMLima"},"datePublished":"2023-06-20T13:01:14.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/7654/cloudstack/issues/7654"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:a643cdb2-cd5f-e680-ff42-561c0846d80e
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idD1D0:1A850:9DC54:DBEAA:6A4DB756
html-safe-nonce187eebfe84fca44ff0a8743f6a82e8423dd788cabc3340989963555aad110184
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEMUQwOjFBODUwOjlEQzU0OkRCRUFBOjZBNERCNzU2IiwidmlzaXRvcl9pZCI6IjY4ODQ3ODY5ODA3NzAwOTc1MCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac0830d9af19314c1901e1fcfc73dda209b2cf44cb2e5c908a28d0c19a90b00565
hovercard-subject-tagissue:1765364383
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/apache/cloudstack/7654/issue_layout
twitter:imagehttps://opengraph.githubassets.com/e5e7329427a2a60f52633b0f3626dac99bf65a2e96eb0650d056f076e1e15bf9/apache/cloudstack/issues/7654
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/e5e7329427a2a60f52633b0f3626dac99bf65a2e96eb0650d056f076e1e15bf9/apache/cloudstack/issues/7654
og:image:altISSUE TYPE Feature Idea COMPONENT NAME API CLOUDSTACK VERSION 4.18/Main SUMMARY Currently, ACS does not allow resources such as ISOs, Volumes, Snapshots, and Templates to be directed to a specific ...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernameBryanMLima
hostnamegithub.com
expected-hostnamegithub.com
None06b8a6144231bf3a234f1c2e9993861e07ce98a905912b114aa386c2d7e84b33
turbo-cache-controlno-preview
go-importgithub.com/apache/cloudstack git https://github.com/apache/cloudstack.git
octolytics-dimension-user_id47359
octolytics-dimension-user_loginapache
octolytics-dimension-repository_id9759448
octolytics-dimension-repository_nwoapache/cloudstack
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id9759448
octolytics-dimension-repository_network_root_nwoapache/cloudstack
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release32f7b614aca06e6bbd89842b1370df1328264f68
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/apache/cloudstack/issues/7654#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fapache%2Fcloudstack%2Fissues%2F7654
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fapache%2Fcloudstack%2Fissues%2F7654
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=apache%2Fcloudstack
Reloadhttps://github.com/apache/cloudstack/issues/7654
Reloadhttps://github.com/apache/cloudstack/issues/7654
Reloadhttps://github.com/apache/cloudstack/issues/7654
Please reload this pagehttps://github.com/apache/cloudstack/issues/7654
apache https://github.com/apache
cloudstackhttps://github.com/apache/cloudstack
Notifications https://github.com/login?return_to=%2Fapache%2Fcloudstack
Fork 1.3k https://github.com/login?return_to=%2Fapache%2Fcloudstack
Star 3k https://github.com/login?return_to=%2Fapache%2Fcloudstack
Code https://github.com/apache/cloudstack
Issues 536 https://github.com/apache/cloudstack/issues
Pull requests 268 https://github.com/apache/cloudstack/pulls
Discussions https://github.com/apache/cloudstack/discussions
Actions https://github.com/apache/cloudstack/actions
Projects https://github.com/apache/cloudstack/projects
Wiki https://github.com/apache/cloudstack/wiki
Security and quality 0 https://github.com/apache/cloudstack/security
Insights https://github.com/apache/cloudstack/pulse
Code https://github.com/apache/cloudstack
Issues https://github.com/apache/cloudstack/issues
Pull requests https://github.com/apache/cloudstack/pulls
Discussions https://github.com/apache/cloudstack/discussions
Actions https://github.com/apache/cloudstack/actions
Projects https://github.com/apache/cloudstack/projects
Wiki https://github.com/apache/cloudstack/wiki
Security and quality https://github.com/apache/cloudstack/security
Insights https://github.com/apache/cloudstack/pulse
#7659https://github.com/apache/cloudstack/pull/7659
Feature: Dynamic Secondary Storage Selectorshttps://github.com/apache/cloudstack/issues/7654#top
#7659https://github.com/apache/cloudstack/pull/7659
type:improvementhttps://github.com/apache/cloudstack/issues?q=state%3Aopen%20label%3A%22type%3Aimprovement%22
type:new-featurehttps://github.com/apache/cloudstack/issues?q=state%3Aopen%20label%3A%22type%3Anew-feature%22
4.19.0.0https://github.com/apache/cloudstack/milestone/24
https://github.com/BryanMLima
BryanMLimahttps://github.com/BryanMLima
on Jun 20, 2023https://github.com/apache/cloudstack/issues/7654#issue-1765364383
1. Proposed changeshttps://github.com/apache/cloudstack/issues/7654#proposed-changes
2. New APIshttps://github.com/apache/cloudstack/issues/7654#new-api-proposal
2.1. createSecondaryStorageSelector APIhttps://github.com/apache/cloudstack/issues/7654#createSecondaryStorageSelector-API
2.2. updateSecondaryStorageSelector APIhttps://github.com/apache/cloudstack/issues/7654#updateSecondaryStorageSelector-API
2.3. removeSecondaryStorageSelector APIhttps://github.com/apache/cloudstack/issues/7654#removeSecondaryStorageSelector-API
2.4. listSecondaryStorageSelectors APIhttps://github.com/apache/cloudstack/issues/7654#listSecondaryStorageSelectors-API
2.5. Variables available for the heuristic ruleshttps://github.com/apache/cloudstack/issues/7654#variables
2.6. Exampleshttps://github.com/apache/cloudstack/issues/7654#examples
https://camo.githubusercontent.com/784e81fc46475f5bfe117a6cf2bb177cfd20ddd79db5ab391fe3b41c55e3c0a9/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f73632d636c6f7564732f696d6167652f75706c6f61642f76313638363933353731392f73706563732f64796e616d69632d7365636f6e646172792d73746f726167652d73656c656374696f6e2f647373735f6336326562752e706e67
https://camo.githubusercontent.com/64aae70c488e441b7f7665f2f4ddc6bd26f91d615969252d1b183a0d9bdd8288/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f73632d636c6f7564732f696d6167652f75706c6f61642f76313637393934313234322f73706563732f64796e616d69632d7365636f6e646172792d73746f726167652d73656c656374696f6e2f6372656174655365636f6e6461727953746f7261676553656c6563746f725f6c71727668742e706e67
https://camo.githubusercontent.com/c698ee7faedbb382a393f4b1d127d08c04f9959112790e9871a3db92887ac81a/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f73632d636c6f7564732f696d6167652f75706c6f61642f76313637393934313234322f73706563732f64796e616d69632d7365636f6e646172792d73746f726167652d73656c656374696f6e2f7570646174655365636f6e6461727953746f7261676553656c6563746f725f6a6b376d71362e706e67
https://camo.githubusercontent.com/717b9cde14020e17ba304e3377771a4a76197aec8f8b80face7a5c454794dab5/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f73632d636c6f7564732f696d6167652f75706c6f61642f76313637393934313234322f73706563732f64796e616d69632d7365636f6e646172792d73746f726167652d73656c656374696f6e2f72656d6f76655365636f6e6461727953746f7261676553656c6563746f725f787a743978782e706e67
https://camo.githubusercontent.com/a9a91f7585d336b6bfa026c5a60844b8f02a92550a04d04d96d6213ef21fffa2/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f73632d636c6f7564732f696d6167652f75706c6f61642f76313637393934313234322f73706563732f64796e616d69632d7365636f6e646172792d73746f726167652d73656c656374696f6e2f6c6973745365636f6e6461727953746f7261676553656c6563746f72735f7838727964332e706e67
type:improvementhttps://github.com/apache/cloudstack/issues?q=state%3Aopen%20label%3A%22type%3Aimprovement%22
type:new-featurehttps://github.com/apache/cloudstack/issues?q=state%3Aopen%20label%3A%22type%3Anew-feature%22
4.19.0.0https://github.com/apache/cloudstack/milestone/24
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.