Introduction

 Purpose

This is the feature specification proposal for CLOUDSTACK-1026.

To enable more sophisticated VM deployments and blueprint (CLOUDSTACK-576) deployments, cloudstack developers and system administrators need a mechanism to perform additional guest customisation. This would include:

Initially this would be from a Java API, then likely offering a REST API and GUI controls.

References

 Document History

Glossary

None yet

Feature Specifications

A java API available to plugins and associated resources in CloudStack, to perform the following against target VM's:

The following items may be addressed as features in the future but are not presently in scope for this work:

Use Cases

The primary use case driving this is the "Blueprints" feature (CLOUDSTACK-576).

We can envisage other use cases, although the demand for them is uncertain:

Architecture and Design Description

Slightly expanded list of requirements:

Initially we will concentrate on a java API which takes information on a created VM and performs these operations.

Internally these will be execution tasks whose status can be monitored, and in the case of executing commands, the stdout and stderr streams accessed.

TBD whether there are other components which should be annotated that such tasks are ongoing (e.g. note on the VM that operations are active).

Appendix

Appendix A: Java API Psueodocde (Very Early Draft)

    class VmGuestCustomizer {
      class Builder {
        Builder vmDetails(...);
        VmGuestCustomizer build();
      }
      Task installFile(InputStream data, String owner, String group, int permissions);
      TaskWithOutputStreams executeCommand(String command);
    }