René's URL Explorer Experiment


Title: Restrict the number of managed clustered file systems per compute cluster by mike-tutkowski · Pull Request #2500 · apache/cloudstack · GitHub

Open Graph Title: Restrict the number of managed clustered file systems per compute cluster by mike-tutkowski · Pull Request #2500 · apache/cloudstack

X Title: Restrict the number of managed clustered file systems per compute cluster by mike-tutkowski · Pull Request #2500 · apache/cloudstack

Description: Description For managed storage, each time a virtual disk is created, a new SR is created (when on XenServer) or a new datastore is created (when on VMware). XenServer 6.5 can support around 500 - 600 SRs per compute cluster before the creation of the next SR starts taking a fairly long time (over a minute). This is, for some admins, unacceptable and they would like a way to stop CloudStack from creating SRs once a certain admin-specified limit is reached. To be clear, though, once the SR is created, it does not suffer performance issues. VMware can support 256 datastores per compute cluster. This is a hard limit. CloudStack has never had the ability to limit the number of SRs or datastores it creates when using managed storage (the admin has needed to pay attention to this via some other process outside of CloudStack). This code aims to address the main use cases in CloudStack that can create SRs or datastores and fails the applicable operations if no more SRs or datastores can be created (based on a new cluster-scoped setting that specifies how many SRs or datastores the admin is OK with CloudStack creating). https://issues.apache.org/jira/browse/CLOUDSTACK-10336 Types of changes Breaking change (fix or feature that would cause existing functionality to change) New feature (non-breaking change which adds functionality) Bug fix (non-breaking change which fixes an issue) Enhancement (improves an existing feature and functionality) Cleanup (Code refactoring and cleanup, that may add test cases) How Has This Been Tested? This code deals with two main situations: When creating a new VM that requires managed storage When attaching a new data disk that requires managed storage to a VM In each of those situations, the code checks a new cluster-scoped setting (can be set by the admin) to see if the new SR or datastore can be created. I ran through a substantial number of manual tests to confirm that the applicable operations succeed or fail depending on if a new SR or datastore can be created. Checklist: I have read the CONTRIBUTING document. My code follows the code style of this project. My change requires a change to the documentation. I have updated the documentation accordingly. I have added tests to cover my changes. All new and existing tests passed. @blueorangutan package

Open Graph Description: Description For managed storage, each time a virtual disk is created, a new SR is created (when on XenServer) or a new datastore is created (when on VMware). XenServer 6.5 can support around 500 - ...

X Description: Description For managed storage, each time a virtual disk is created, a new SR is created (when on XenServer) or a new datastore is created (when on VMware). XenServer 6.5 can support around 500 - ...

Opengraph URL: https://github.com/apache/cloudstack/pull/2500

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:0171f7c7-4678-fca6-1f4e-ffccc50c4e4e
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idCB4C:34BFFD:2F938DC:4185C5B:6A4F13B2
html-safe-noncebfe9d982d7e4b4e882dc7e3f55fe11ca5532fdd98df6d1dff51dbdae1143817c
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDQjRDOjM0QkZGRDoyRjkzOERDOjQxODVDNUI6NkE0RjEzQjIiLCJ2aXNpdG9yX2lkIjoiNDM3OTkwMDQ2OTMzNTQ5NTYwMiIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac26d3fe15255e3f84127f786aa0e95d46e1564bf497d980a623cd2aacf576e3a3
hovercard-subject-tagpull_request:176607929
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/apache/cloudstack/pull/2500/files
twitter:imagehttps://avatars.githubusercontent.com/u/3019295?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/3019295?s=400&v=4
og:image:altDescription For managed storage, each time a virtual disk is created, a new SR is created (when on XenServer) or a new datastore is created (when on VMware). XenServer 6.5 can support around 500 - ...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneb92d11c0aa4a77d54ef4af1078b6a15fb5a70a215b30c4ecf28889d5a8e656d9
turbo-cache-controlno-preview
diff-viewunified
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 full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release2b8f23afb982271f1b22258a94aede67a6b77760
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/apache/cloudstack/pull/2500/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fapache%2Fcloudstack%2Fpull%2F2500%2Ffiles
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/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/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/enterprise/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%2Fpull%2F2500%2Ffiles
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%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=apache%2Fcloudstack
Reloadhttps://github.com/apache/cloudstack/pull/2500/files
Reloadhttps://github.com/apache/cloudstack/pull/2500/files
Reloadhttps://github.com/apache/cloudstack/pull/2500/files
Please reload this pagehttps://github.com/apache/cloudstack/pull/2500/files
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 266 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
Sign up for GitHub https://github.com/signup?return_to=%2Fapache%2Fcloudstack%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fapache%2Fcloudstack%2Fissues%2Fnew%2Fchoose
mike-tutkowskihttps://github.com/mike-tutkowski
apache:masterhttps://github.com/apache/cloudstack/tree/master
mike-tutkowski:limit-managed-srs-and-datastoreshttps://github.com/mike-tutkowski/cloudstack/tree/limit-managed-srs-and-datastores
Conversation 64 https://github.com/apache/cloudstack/pull/2500
Commits 2 https://github.com/apache/cloudstack/pull/2500/commits
Checks 0 https://github.com/apache/cloudstack/pull/2500/checks
Files changed https://github.com/apache/cloudstack/pull/2500/files
Please reload this pagehttps://github.com/apache/cloudstack/pull/2500/files
Restrict the number of managed clustered file systems per compute cluster https://github.com/apache/cloudstack/pull/2500/files#top
Show all changes 2 commits https://github.com/apache/cloudstack/pull/2500/files
5ed41f0 Restrict the number of managed clustered file systems per compute clu… Mar 14, 2018 https://github.com/apache/cloudstack/pull/2500/commits/5ed41f07e7c401242d07980e2a81b6c48ee524b8
5f61538 Updates related to additional review comments Sep 8, 2018 https://github.com/apache/cloudstack/pull/2500/commits/5f61538e12731bd0ba6c642b7f8ff661eceebb74
Clear filters https://github.com/apache/cloudstack/pull/2500/files
Please reload this pagehttps://github.com/apache/cloudstack/pull/2500/files
Please reload this pagehttps://github.com/apache/cloudstack/pull/2500/files
StorageManager.java https://github.com/apache/cloudstack/pull/2500/files#diff-6ac323b649f3c22f7391e3f45e6f1383e9d5d193c5ec80b80a94f204d3a8f45f
StorageUtil.java https://github.com/apache/cloudstack/pull/2500/files#diff-b0d9b606e22bf71f8c42087d3e3e0b44111b5e4e55bb08921347f9b522b4ff0a
spring-engine-components-api-core-context.xml https://github.com/apache/cloudstack/pull/2500/files#diff-22aed0499832b0366945bd6f470e7c0a8e48f7082f63e487a83c11550c17648a
AbstractStoragePoolAllocator.java https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
ClusterScopeStoragePoolAllocator.java https://github.com/apache/cloudstack/pull/2500/files#diff-61166fd0e80205c72104193ac5775fde0316d50eb849592ddf806d96bc7f6f78
LocalStoragePoolAllocator.java https://github.com/apache/cloudstack/pull/2500/files#diff-cca73b269e7eaf3dd3fc64f0022ce525898d65f0a7e78782b84f8fe0f57f8e05
ZoneWideStoragePoolAllocator.java https://github.com/apache/cloudstack/pull/2500/files#diff-b53e3c011de1d79a50be9a0e8f234bf98e8780ba9ae8733cb378f559decbf3fd
RandomStoragePoolAllocator.java https://github.com/apache/cloudstack/pull/2500/files#diff-22f3ac186731b6f2d7eee63f853a92bf8be6644ea7d87d6fac86519835896b97
StorageManagerImpl.java https://github.com/apache/cloudstack/pull/2500/files#diff-cf68e132ad7711cfa9250cda5819c09f51cba9933aa595cd82ad5a02b4edbe64
VolumeApiServiceImpl.java https://github.com/apache/cloudstack/pull/2500/files#diff-b93da5c5293f8cb4470ff6b1642d312131bb053df07b71b4b951b08dff0ad9ab
TestManagedClusteredFilesystems.py https://github.com/apache/cloudstack/pull/2500/files#diff-d7c30e704a0f45b578990a5cb89e420ad469d473b3acf221c25d02d56e54b2bf
engine/components-api/src/main/java/com/cloud/storage/StorageManager.javahttps://github.com/apache/cloudstack/pull/2500/files#diff-6ac323b649f3c22f7391e3f45e6f1383e9d5d193c5ec80b80a94f204d3a8f45f
View file https://github.com/mike-tutkowski/cloudstack/blob/5f61538e12731bd0ba6c642b7f8ff661eceebb74/engine/components-api/src/main/java/com/cloud/storage/StorageManager.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/apache/cloudstack/pull/2500/{{ revealButtonHref }}
https://github.com/apache/cloudstack/pull/2500/files#diff-6ac323b649f3c22f7391e3f45e6f1383e9d5d193c5ec80b80a94f204d3a8f45f
https://github.com/apache/cloudstack/pull/2500/files#diff-6ac323b649f3c22f7391e3f45e6f1383e9d5d193c5ec80b80a94f204d3a8f45f
engine/components-api/src/main/java/com/cloud/storage/StorageUtil.javahttps://github.com/apache/cloudstack/pull/2500/files#diff-b0d9b606e22bf71f8c42087d3e3e0b44111b5e4e55bb08921347f9b522b4ff0a
View file https://github.com/mike-tutkowski/cloudstack/blob/5f61538e12731bd0ba6c642b7f8ff661eceebb74/engine/components-api/src/main/java/com/cloud/storage/StorageUtil.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/apache/cloudstack/pull/2500/{{ revealButtonHref }}
Please reload this pagehttps://github.com/apache/cloudstack/pull/2500/files
...src/main/resources/META-INF/cloudstack/core/spring-engine-components-api-core-context.xmlhttps://github.com/apache/cloudstack/pull/2500/files#diff-22aed0499832b0366945bd6f470e7c0a8e48f7082f63e487a83c11550c17648a
View file https://github.com/mike-tutkowski/cloudstack/blob/5f61538e12731bd0ba6c642b7f8ff661eceebb74/engine/components-api/src/main/resources/META-INF/cloudstack/core/spring-engine-components-api-core-context.xml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/apache/cloudstack/pull/2500/{{ revealButtonHref }}
https://github.com/apache/cloudstack/pull/2500/files#diff-22aed0499832b0366945bd6f470e7c0a8e48f7082f63e487a83c11550c17648a
Please reload this pagehttps://github.com/apache/cloudstack/pull/2500/files
...e/src/main/java/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.javahttps://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
View file https://github.com/mike-tutkowski/cloudstack/blob/5f61538e12731bd0ba6c642b7f8ff661eceebb74/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/AbstractStoragePoolAllocator.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/apache/cloudstack/pull/2500/{{ revealButtonHref }}
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
Please reload this pagehttps://github.com/apache/cloudstack/pull/2500/files
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
https://github.com/apache/cloudstack/pull/2500/files#diff-c5af9c3fde3c6489619d19a97f463e1ef703d5495bdba51d75f76a13acfa4c83
...c/main/java/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.javahttps://github.com/apache/cloudstack/pull/2500/files#diff-61166fd0e80205c72104193ac5775fde0316d50eb849592ddf806d96bc7f6f78
View file https://github.com/mike-tutkowski/cloudstack/blob/5f61538e12731bd0ba6c642b7f8ff661eceebb74/engine/storage/src/main/java/org/apache/cloudstack/storage/allocator/ClusterScopeStoragePoolAllocator.java
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/apache/cloudstack/pull/2500/{{ revealButtonHref }}
https://github.com/apache/cloudstack/pull/2500/files#diff-61166fd0e80205c72104193ac5775fde0316d50eb849592ddf806d96bc7f6f78
https://github.com/apache/cloudstack/pull/2500/files#diff-61166fd0e80205c72104193ac5775fde0316d50eb849592ddf806d96bc7f6f78
https://github.com/apache/cloudstack/pull/2500/files#diff-61166fd0e80205c72104193ac5775fde0316d50eb849592ddf806d96bc7f6f78
https://github.com/apache/cloudstack/pull/2500/files#diff-61166fd0e80205c72104193ac5775fde0316d50eb849592ddf806d96bc7f6f78
Please reload this pagehttps://github.com/apache/cloudstack/pull/2500/files
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.