Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Contents

...

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

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Suresh Kumar Anaparti, mail: sureshkumar.anaparti (at) apache.org
Project Devs, mail: dev (at) cloudstack.apache.org

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)

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Nicolás Vázquez, mail: nvazquez (at) apache.org
Project Devs, mail: dev (at) cloudstack.apache.org

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

Difficulty: Minor
Project size: ~350 hour (large)
Potential mentors:
Nux, mail: nuxro (at) apache.org
Project Devs, mail: dev (at) cloudstack.apache.org

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

Difficulty: Minor
Project size: ~350 hour (large)
Potential mentors:
Nux, mail: nuxro (at) apache.org
Project Devs, mail: dev (at) cloudstack.apache.org

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
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
  • 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

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]

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Suresh Kumar Anaparti, mail: sureshkumar.anaparti (at) apache.org
Project Devs, mail: dev (at) cloudstack.apache.org
/api/apidocs-4.16/Future Extensions

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

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Suresh Kumar AnapartiNicolás Vázquez, mail: sureshkumar.anaparti nvazquez (at) apache.org
Project Devs, mail: dev (at) cloudstack.apache.org

...

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.

https://github.com/apache/dubbo-go/issues/1808

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Zhixin Li, mail: laurence (at) apache.org
Project Devs, mail:

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.

Difficulty: Major
Project size: ~350 hour (large)
Potential mentors:
Jun Liu, mail: chicken (at) apache.org
Project Devs, mail:

...