class AutonomiccsSystemVmDeploymentService implements InitializingBean {

    protected AutonomiccsSystemVm deploySystemVm(Long hostId, SystemVmType systemVmType) {
        HostVO host = hostService.findHostById(hostId);
        validateParametersToDeployTheSystemVm(hostId, host);
        VMTemplateVO systemVmTemplate = getSystemVmTemplate(host);

        DataCenterDeployment plan = new DataCenterDeployment(host.getDataCenterId(), host.getPodId(), host.getClusterId(), host.getId(), null, null);
        Account systemAcct = accountManager.getSystemAccount();
        LinkedHashMap<Network, List<? extends NicProfile>> networks = getSystemVmNetworks(host, plan, systemAcct);
        long id = getNextSystemVmId();
        String name = createAutonomiccsSystemVmNameForType(id, systemVmType, getVirtualMachineInstanceSuffix());

        AutonomiccsSystemVm autonomiccsSystemVm = createTheAutonomiccsSystemVm(systemVmTemplate, systemAcct, id, name);
        autonomiccsSystemVm = allocateAndStartTheSystemVm(systemVmTemplate, plan, networks, autonomiccsSystemVm);

        waitUntilTheAutonomiccsSystemVmIsUpAndRunning(autonomiccsSystemVm);
        return autonomiccsSystemVm;
    }

}