diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..0cebf93 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,136 @@ +name: "Bug Report" +description: "File a bug report for PyPowerStore" +title: "[BUG]: " +labels: ["type/bug", "needs-triage"] +body: + - type: input + id: title + attributes: + label: Title + description: "[BUG]: prefix is required and cannot be removed" + value: "[BUG]: " + validations: + required: true + - type: markdown + attributes: + value: | + Thank you for reporting a bug in PyPowerStore! Please provide the information below. + + ## Community Note + * Please vote on this issue by adding a reaction to help prioritize this request + * Please do not leave "+1" or other comments that do not add relevant new information or questions + * If you are interested in working on this issue or have submitted a pull request, please leave a comment + + - type: textarea + id: bug-description + attributes: + label: Bug Description + description: A clear and concise description of what the bug is + validations: + required: true + + - type: textarea + id: python-environment + attributes: + label: Python Environment + description: | + Please provide your Python environment details: + - Python Version: [e.g. 3.8, 3.9, 3.10] + - PyPowerStore Version: [e.g. 1.0.0, 1.1.0] + - Operating System: [e.g. RHEL 8.5, Ubuntu 20.04, Windows 10] + - Installation Method: [e.g. pip, git clone] + placeholder: | + Python: 3.9.10 + PyPowerStore: 1.0.0 + OS: Ubuntu 20.04 + Installation: pip install pypowerstore + validations: + required: true + + - type: textarea + id: powerstore-environment + attributes: + label: PowerStore Environment + description: | + Please provide details about the PowerStore environment: + - PowerStore Version: [e.g. 4.0, 3.6, 3.5] + - PowerStore IP/Hostname: [e.g. 192.168.1.100] + - Authentication Method: [e.g. username/password, API key] + - Network Configuration: [e.g. VPN, direct connection, proxy] + placeholder: | + PowerStore Version: 4.0 + PowerStore IP: 192.168.1.100 + Auth: Username/Password + Network: Direct connection + validations: + required: true + + - type: textarea + id: reproduction-steps + attributes: + label: Reproduction Steps + description: | + Include the complete Python code that reproduces the issue. + Please be sure to remove all sensitive data such as IP addresses, host names, credentials, etc. + + Example: + ```python + from pypowerstore import PowerStore + + # Initialize PowerStore connection + powerstore = PowerStore( + server_ip="192.168.1.100", + username="admin", + password="password" + ) + + # Code that reproduces the issue + try: + volumes = powerstore.volume.get_all_volumes() + print(f"Found {len(volumes)} volumes") + except Exception as e: + print(f"Error: {e}") + ``` + render: markdown + validations: + required: true + + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: A clear and concise description of what you expected to happen + validations: + required: true + + - type: textarea + id: actual-behavior + attributes: + label: Actual Behavior + description: A clear and concise description of what actually happened + validations: + required: true + + - type: textarea + id: error-output + attributes: + label: Complete Error Output + description: Copy/paste the complete error message including traceback. Remove sensitive data. + validations: + required: false + + - type: textarea + id: troubleshooting + attributes: + label: Troubleshooting Steps Taken + description: What have you tried so far to resolve this issue? + validations: + required: false + + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: Any other context about the problem, such as related documentation, similar issues, etc. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..8617104 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,23 @@ +blank_issues_enabled: false +contact_links: + - name: "PyPowerStore Documentation" + url: https://github.com/dell/python-powerstore + about: Official PyPowerStore documentation and examples + - name: "PowerStore Documentation" + url: https://www.dell.com/support/home/en-us/product-support/product/dell-emc-powerstore/documentation + about: Official PowerStore documentation and API references + - name: "PyPowerStore on PyPI" + url: https://pypi.org/project/pypowerstore/ + about: Browse and install the PyPowerStore package + - name: "GitHub Discussions" + url: https://github.com/orgs/dell/discussions + about: Ask and answer PowerStore questions in community discussions + - name: "Dell Storage Community" + url: https://www.dell.com/community/en/categories/storage + about: Dell Storage community discussions and best practices + - name: "Security Issues" + url: mailto:security@dell.com + about: Please report security vulnerabilities privately and responsibly + - name: "PowerStore Support" + url: mailto:ansible.team@dell.com + about: Contact Dell team for PowerStore support and inquiries \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..a693999 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,138 @@ +name: "Feature Request" +description: "Suggest an enhancement for PyPowerStore" +title: "[FEATURE]: " +labels: ["type/feature-request", "needs-triage"] +body: + - type: input + id: title + attributes: + label: Title + description: "[FEATURE]: prefix is required and cannot be removed" + value: "[FEATURE]: " + validations: + required: true + - type: markdown + attributes: + value: | + Thank you for suggesting a feature enhancement for PyPowerStore! + + ## Community Note + * Please vote on this issue by adding a reaction to help prioritize this request + * Please do not leave "+1" or other comments that do not add relevant new information or questions + * If you are interested in working on this issue or have submitted a pull request, please leave a comment + + - type: input + id: module-name + attributes: + label: Module/Function Name (if applicable) + description: Enter the specific module or function name this relates to (e.g., volume, storage_pool, nfs_export) + placeholder: "volume" + validations: + required: false + + - type: dropdown + id: request-type + attributes: + label: Request Type + description: What type of enhancement are you requesting? + options: + - New Module/Function + - New Function Parameter + - Module Enhancement + - Documentation Improvement + - Performance Improvement + - Error Handling Enhancement + - API Coverage Enhancement + - Other (specify in description) + validations: + required: true + + - type: textarea + id: problem-statement + attributes: + label: Problem Statement + description: What problem are you trying to solve with this feature request? + validations: + required: true + + - type: textarea + id: proposed-solution + attributes: + label: Proposed Solution + description: A clear and concise description of what you want to happen + validations: + required: true + + - type: textarea + id: python-use-case + attributes: + label: Python Use Case + description: | + Describe how this feature would be used in Python code. + Include example code if possible. + + Example: + ```python + from pypowerstore import PowerStore + + # Initialize PowerStore connection + powerstore = PowerStore( + server_ip="192.168.1.100", + username="admin", + password="password" + ) + + # Proposed new functionality + result = powerstore.volume.new_functionality( + name="example_volume", + size=100, + new_parameter="value" + ) + print(f"Result: {result}") + ``` + render: markdown + validations: + required: false + + - type: textarea + id: alternatives + attributes: + label: Alternative Solutions Considered + description: A clear and concise description of any alternative solutions or workarounds you've considered + validations: + required: false + + - type: textarea + id: api-considerations + attributes: + label: API/Backend Considerations + description: | + If this feature involves PowerStore API calls, describe: + - Relevant API endpoints (if known) + - API version requirements + - Authentication considerations + - Rate limiting or performance concerns + validations: + required: false + + - type: dropdown + id: contribution-interest + attributes: + label: Contribution Interest + description: Would you be interested in contributing to this feature? + options: + - Yes, I can implement this feature + - Yes, I can help with testing + - Yes, I can help with documentation + - No, but I can provide guidance + - No contribution interest at this time + validations: + required: true + + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: Any other context, screenshots, or examples about the feature request + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 0000000..a370d4e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1,124 @@ +name: "Question" +description: "Ask usage questions about PyPowerStore" +title: "[QUESTION]: " +labels: ["type/question", "needs-triage"] +body: + - type: input + id: title + attributes: + label: Title + description: "[QUESTION]: prefix is required and cannot be removed" + value: "[QUESTION]: " + validations: + required: true + - type: markdown + attributes: + value: | + Thank you for asking a question about PyPowerStore! Please provide the information below. + + ## Community Note + * Please vote on this question by adding a reaction to help prioritize this request + * Please do not leave "+1" or other comments that do not add relevant new information or questions + * If you are interested in working on this issue or have submitted a pull request, please leave a comment + + - type: input + id: module-name + attributes: + label: Module/Function Name + description: Specify the relevant module or function name + placeholder: "e.g., volume, storage_pool, nfs_export, user" + validations: + required: false + + - type: dropdown + id: question-category + attributes: + label: Question Category + description: What type of question do you have? + options: + - Module Usage + - Installation/Setup + - Authentication + - Error Troubleshooting + - Best Practices + - API Documentation + - Integration + - Other (specify in description) + validations: + required: true + + - type: textarea + id: python-environment + attributes: + label: Python Environment + description: If relevant, provide your Python environment details + placeholder: | + Python Version: e.g., 3.9.10 + PyPowerStore Version: e.g., 1.0.0 + OS: e.g., Ubuntu 20.04, Windows 10 + Installation: e.g., pip install pypowerstore + validations: + required: false + + - type: textarea + id: powerstore-environment + attributes: + label: PowerStore Environment + description: If relevant, provide PowerStore environment details + placeholder: | + PowerStore Version: e.g., 4.0, 3.6 + PowerStore IP: e.g., 192.168.1.100 + Auth: e.g., Username/Password, API Key + validations: + required: false + + - type: textarea + id: question-details + attributes: + label: Question Details + description: Provide detailed information about your question + validations: + required: true + + - type: textarea + id: troubleshooting + attributes: + label: What have you tried so far? + description: Describe any troubleshooting steps you've already tried + validations: + required: false + + - type: textarea + id: code-example + attributes: + label: Code Example + description: If relevant, include your Python code (remove sensitive data) + placeholder: | + ```python + from pypowerstore import PowerStore + + # Initialize PowerStore connection + powerstore = PowerStore( + server_ip="192.168.1.100", + username="admin", + password="password" + ) + + # Your code here + result = powerstore.volume.get_all_volumes() + print(f"Found {len(result)} volumes") + ``` + validations: + required: false + + - type: textarea + id: error-messages + attributes: + label: Error Messages + description: Include any error messages you're encountering + placeholder: | + ``` + # Paste error messages here + ``` + validations: + required: false \ No newline at end of file