Contents
- James Server
- APISIX
- SkyWalking
- ShardingSphere
- Apache ShardingSphere Solve unsupported Postgres sql about alter statement for ShardingSphere Parser
- ShenYu
- TrafficControl
- RocketMQ
- Community Development
- DolphinScheduler
- Commons Statistics
- Commons Numbers
- Commons Math
- Commons Geometry
- CloudStack
- Cassandra
- Beam
- Apache Nemo
- Apache Dubbo
- Apache AsterixDB
- Airavata
...
GSoC 2022 Idea Instant Instance Deploy (using VM Definitions)
Background
Currently, Deploy Instances/Virtual Machines(VMs) in Cloudstack requires to specify some offerings, template and other settings through the API (check the API here: https://cloudstack.apache.org/api/apidocs-4.16/apis/deployVirtualMachine.html) or the 'Instance Deployment Wizard' in the UI.
Requirement
Provision to user/operator to quick deploy an instance using a VM definition/profile. The VM definition/profile would hold the details of the template, offerings (including any custom values - size, iops), ssh keypair, instance group, affinity group and other settings (boot type, dynamic scaling, userdata, keyboard language, etc) that are required, and the underlying definition/profile id can be used to launch an instance. At the minimum, the definition should hold all the mandatory details for deploying an instance. With this, only the VM definitions/profiles (and other important options, with the associated billing details) can be exposed to the users for VM deployment, instead of the offerings and other VM options.
Need to add new APIs (and/or UI) support for the VM definition/profile CRUD operations, and support for definition in the deployVirtualMachine API.
Relevant Skills
- Java, MySQL
- Vue.js (for UI)
- Some knowledge of Virtualization and CloudStack
Difficulty
Medium
Potential Mentors
- Suresh Kumar Anaparti
- David Jumani
Project Scope/Duration
Medium / 175 hours
References
GSoC 2022 More granularity on affinity/anti-affinity groups
Currently, defining an affinity or anti-affinity rule works only at hosts level. I would like to have more detail on the affinity group, extending it at different levels (cluster, pod, zone,..) and also within the same level, being able to add or remove resources from the group.
For hosts and storage pools, administrators can make use of host tags or storage tags to get a similar result. However, the extension of affinity/anti-affinity groups would make the administration easier.
Size of the project: Medium (~175hs)
GSoC 2022 Idea Autodetect IPs used inside the VM
With regards to IP info reporting, Cloudstack relies entirely on it's DHCP data bases and so on. When this is not available (L2 networks etc) no IP information is shown for a given VM.
I propose we introduce a mechanism for "IP autodetection" and try to discover the IPs used inside the machines by means of querying the hypervisors. For example with KVM/libvirt we can simply do something like this:
root@fedora35 ~]# virsh domifaddr win2k22 --source agent
Name MAC address Protocol Address
-------------------------------------------------------------------------------
Ethernet 52:54:00:7b:23:6a ipv4 192.168.0.68/24
Loopback Pseudo-Interface 1 ipv6 ::1/128 - - ipv4 127.0.0.1/8
The above command queries the qemu-guest-agent inside the Windows VM. The VM needs to have the qemu-guest-agent installed and running as well as the virtio serial drivers (easily done in this case with virtio-win-guest-tools.exe ) as well as a guest-agent socket channel defined in libvirt.
Once we have this information we could display it in the UI/API as "Autodetected VM IPs" or something like that.
I imagine it's very similar for VMWare and XCP-ng.
Thank you
GSoC 2022 Idea Keep track of VM's "last known state" and enforce it after an outage
An infrastructure outage can take out several or all VMs. In the aftermath it's not always possible to know which VMs were supposed to be ON or OFF, especially if HA is not enabled. People keep powered off VMs around all the time for many reasons.
I propose we add a feature where Cloudstack keeps track of the "last known state" of a VM and after an outage either enforce it (ie start the VM or leave it off) or at least show some information to the operator in the UI/API so they can do it themselves; perhaps make this behaviour configurable in the global settings.
Thanks
GSoC 2022 Idea Report / Manage the VM jobs in CloudStack
Background
CloudStack allows users/operators to perform various operations on the Virtual Machines (VMs). When multiple operations are performed on a VM at the same time, these operations are maintained and sync-ed using the sync queues. Any long running job (eg. volume snapshot) of a VM keeps other jobs in waiting/pending state, and only be picked once the active job is finished. Currently, it is not possible for an operator to list the pending jobs on a VM, cancel or re-prioritise any job if needed.
Requirement
Provision to admin/operator, to the list the pending jobs of a VM, cancel or re-prioritise a job if needed. Also, allow to clear all the pending jobs of a VM.
Add API (and/or UI) support to
- List the active jobs for a VM
- List all the pending jobs of a VM (in queue, by their order of execution)
- Re-prioritise a job from the pending jobs (if possible)
- Cancel any job from the pending jobs
Background
CloudStack allows users/operators to perform various operations on the Virtual Machines (VMs). When multiple operations are performed on a VM at the same time, these operations are maintained and sync-ed using the sync queues. Any long running job (eg. volume snapshot) of a VM keeps other jobs in waiting/pending state, and only be picked once the active job is finished. Currently, it is not possible for an operator to list the pending jobs on a VM, cancel or re-prioritise any job if needed.
Requirement
Provision to admin/operator, to the list the pending jobs of a VM, cancel or re-prioritise a job if needed. Also, allow to clear all the pending jobs of a VM.
Add API (and/or UI) support to
- List the active jobs for a VM
- List all the pending jobs of a VM (in queue, by their order of execution)
- Re-prioritise a job from the pending jobs (if possible)
- Cancel any job from the pending jobs
- Clear all the pending jobs of a VM
Relevant Skills
- Java, MySQL
- Vue.js (for UI)
- Some knowledge of CloudStack and its Job framework
Difficulty
Medium
Potential Mentors
- Suresh Kumar Anaparti
- Any Developer from CS Community
Project Scope/Duration
Large / 350hrs (can be Medium / 175 hours - with reduced scope of API/UI work)
References
- http://docs.cloudstack.apache.org/en/latest/adminguide/index.html#working-with-virtual-machines
- https://cwiki.apache.org/confluence/display/CLOUDSTACK/FS+-+VMSync+improvement
- https://cwiki.apache.org/confluence/display/CLOUDSTACK/Snapshot+throttling+FShttps://FS
- https://cloudstack.apache.org/api/apidocs-4.16/
Future Extensions
This can be extended for other resources (hosts, primary storage, network, etc).
[APIs should take resource type as a param for generic implementation]
GSoc 2022 - CloudStack OAuth2 Plugin
This can be extended for other resources (hosts, primary storage, network, etc).
[APIs should take resource type as a param for generic implementation]an interesting task for an engineer with domain knowledge on backend services in Java and some knowledge in Vue.js or relevant tech. Also, domain knowledge of OAuth authentication is desirable.
The main objectives of this task are:
- Create a new CloudStack authentication plugin: this plugin will allow authentication to third-party libraries such as Google, Facebook, Github, etc.
- Extend CloudStack configurations: allow administrators to enable/disable the plugin and configure the auth provider
More information about the task on: https://github.com/apache/cloudstack/issues/4834
Size: Medium
...
GSoC2022 Proxyless Mesh support for Dubbo-go
Please read the detailed proposal of Dubbo Proxyless Mesh here first to know about the ultimate goal behind this issue.
The details of this project will be posted on the following GitHub issue, please keep posted there.
GSoC2022 Rust language implementation
Dubbo provides implementations of almost all mainstream languages from Java, Golang, Javascript, C# to Python, etc.
In this project, we want to build a basic Rust implementation for Dubbo.
...