diff options
author | Adam Coldrick <adam.coldrick@codethink.co.uk> | 2015-06-02 14:01:55 +0000 |
---|---|---|
committer | Adam Coldrick <adam.coldrick@codethink.co.uk> | 2015-06-02 14:01:55 +0000 |
commit | c6abc426b5857f9b1edd9c72e3094c1e2df8a7bf (patch) | |
tree | eff61e6fe9bb3adcf254c4e86eebca7190c65cce | |
parent | 4f43fdd08770c113f7443fecbda43d4316091d4b (diff) | |
parent | 02faf51e91a8c55adfbb6d953bca354ab99bf261 (diff) | |
download | definitions-c6abc426b5857f9b1edd9c72e3094c1e2df8a7bf.tar.gz |
Merge branch 'baserock/adamcoldrick/all-exts-in-definitions-v2'
Reviewed-by: Richard Maw <richard.maw@codethink.co.uk>
-rw-r--r-- | clusters/cephclient.morph | 4 | ||||
-rw-r--r-- | clusters/ci.morph | 18 | ||||
-rw-r--r-- | clusters/example-distbuild-cluster.morph | 8 | ||||
-rw-r--r-- | clusters/example-swift-storage-cluster.morph | 6 | ||||
-rw-r--r-- | clusters/hardware-deployment.morph | 6 | ||||
-rw-r--r-- | clusters/image-package-example.morph | 4 | ||||
-rw-r--r-- | clusters/initramfs-test.morph | 4 | ||||
-rw-r--r-- | clusters/installer-build-system-x86_64.morph | 8 | ||||
-rw-r--r-- | clusters/jetson-upgrade.morph | 2 | ||||
-rw-r--r-- | clusters/mason-openstack.morph | 4 | ||||
-rw-r--r-- | clusters/mason.morph | 6 | ||||
-rw-r--r-- | clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph | 2 | ||||
-rw-r--r-- | clusters/minimal-system-deploy.morph | 2 | ||||
-rw-r--r-- | clusters/moonshot-m2-armv8b64.morph | 8 | ||||
-rw-r--r-- | clusters/moonshot-pxe-armv8b64.morph | 4 | ||||
-rw-r--r-- | clusters/moonshot-pxe-armv8l64.morph | 4 | ||||
-rw-r--r-- | clusters/openstack-one-node-swift.morph | 4 | ||||
-rw-r--r-- | clusters/openstack-one-node.morph | 4 | ||||
-rw-r--r-- | clusters/openstack-three-node-installer.morph | 8 | ||||
-rw-r--r-- | clusters/openstack-two-node-installer.morph | 8 | ||||
-rw-r--r-- | clusters/release.morph | 18 | ||||
-rw-r--r-- | clusters/sdk-example-cluster.morph | 4 | ||||
-rw-r--r-- | clusters/trove-example.morph | 4 | ||||
-rw-r--r-- | clusters/trove.baserock.org-upgrade.morph | 2 | ||||
-rw-r--r-- | clusters/upgrade-devel.morph | 2 | ||||
-rw-r--r-- | clusters/weston-system-x86_64-generic-deploy.morph | 4 | ||||
-rw-r--r-- | clusters/zookeeper.morph | 4 | ||||
-rwxr-xr-x | extensions/add-config-files.configure | 26 | ||||
-rw-r--r-- | extensions/busybox-init.configure (renamed from busybox-init.configure) | 0 | ||||
-rw-r--r-- | extensions/ceph.configure (renamed from ceph.configure) | 0 | ||||
-rwxr-xr-x | extensions/cloud-init.configure (renamed from cloud-init.configure) | 0 | ||||
-rwxr-xr-x | extensions/distbuild-trove-nfsboot.check | 150 | ||||
-rwxr-xr-x | extensions/distbuild-trove-nfsboot.write | 283 | ||||
-rw-r--r-- | extensions/distbuild-trove-nfsboot.write.help | 49 | ||||
-rw-r--r-- | extensions/distbuild.configure (renamed from distbuild.configure) | 0 | ||||
-rwxr-xr-x | extensions/fstab.configure | 28 | ||||
-rw-r--r-- | extensions/hosts (renamed from distbuild/usr/lib/distbuild-setup/ansible/hosts) | 0 | ||||
-rwxr-xr-x | extensions/hosts.configure | 48 | ||||
-rw-r--r-- | extensions/image-package-example/README (renamed from image-package-example/README) | 0 | ||||
-rw-r--r-- | extensions/image-package-example/common.sh.in (renamed from image-package-example/common.sh.in) | 0 | ||||
-rw-r--r-- | extensions/image-package-example/disk-install.sh.in (renamed from image-package-example/disk-install.sh.in) | 0 | ||||
-rw-r--r-- | extensions/image-package-example/make-disk-image.sh.in (renamed from image-package-example/make-disk-image.sh.in) | 0 | ||||
-rwxr-xr-x | extensions/image-package.write (renamed from image-package.write) | 0 | ||||
-rwxr-xr-x | extensions/initramfs.write | 26 | ||||
-rw-r--r-- | extensions/initramfs.write.help | 55 | ||||
-rwxr-xr-x | extensions/install-essential-files.configure | 42 | ||||
-rw-r--r-- | extensions/install-essential-files.configure.help | 20 | ||||
-rwxr-xr-x | extensions/install-files.configure | 134 | ||||
-rw-r--r-- | extensions/install-files.configure.help | 74 | ||||
-rwxr-xr-x | extensions/installer.configure (renamed from installer.configure) | 0 | ||||
-rw-r--r-- | extensions/jffs2.write (renamed from jffs2.write) | 0 | ||||
-rw-r--r-- | extensions/jffs2.write.help (renamed from jffs2.write.help) | 0 | ||||
-rwxr-xr-x | extensions/kvm.check | 169 | ||||
-rwxr-xr-x | extensions/kvm.write | 120 | ||||
-rw-r--r-- | extensions/kvm.write.help | 90 | ||||
-rw-r--r-- | extensions/mason.configure (renamed from mason.configure) | 18 | ||||
-rw-r--r-- | extensions/mason/ansible/hosts (renamed from hosts) | 0 | ||||
-rw-r--r-- | extensions/mason/ansible/mason-setup.yml (renamed from mason/ansible/mason-setup.yml) | 0 | ||||
-rw-r--r-- | extensions/mason/httpd.service (renamed from mason/httpd.service) | 0 | ||||
-rwxr-xr-x | extensions/mason/mason-generator.sh (renamed from mason/mason-generator.sh) | 0 | ||||
-rwxr-xr-x | extensions/mason/mason-report.sh (renamed from mason/mason-report.sh) | 0 | ||||
-rw-r--r-- | extensions/mason/mason-setup.service (renamed from mason/mason-setup.service) | 0 | ||||
-rw-r--r-- | extensions/mason/mason.service (renamed from mason/mason.service) | 0 | ||||
-rwxr-xr-x | extensions/mason/mason.sh (renamed from mason/mason.sh) | 0 | ||||
-rw-r--r-- | extensions/mason/mason.timer (renamed from mason/mason.timer) | 0 | ||||
-rw-r--r-- | extensions/mason/os-init-script (renamed from mason/os-init-script) | 0 | ||||
-rw-r--r-- | extensions/mason/share/mason.conf (renamed from mason/share/mason.conf) | 0 | ||||
-rw-r--r-- | extensions/mason/share/os.conf (renamed from mason/share/os.conf) | 0 | ||||
-rw-r--r-- | extensions/moonshot-kernel.configure (renamed from moonshot-kernel.configure) | 0 | ||||
-rwxr-xr-x | extensions/nfsboot-server.configure (renamed from nfsboot-server.configure) | 0 | ||||
-rwxr-xr-x | extensions/nfsboot.check | 95 | ||||
-rwxr-xr-x | extensions/nfsboot.configure | 30 | ||||
-rwxr-xr-x | extensions/nfsboot.write | 202 | ||||
-rw-r--r-- | extensions/nfsboot.write.help | 33 | ||||
-rw-r--r-- | extensions/openstack-ceilometer.configure (renamed from openstack-ceilometer.configure) | 0 | ||||
-rw-r--r-- | extensions/openstack-cinder.configure (renamed from openstack-cinder.configure) | 0 | ||||
-rw-r--r-- | extensions/openstack-glance.configure (renamed from openstack-glance.configure) | 0 | ||||
-rw-r--r-- | extensions/openstack-ironic.configure (renamed from openstack-ironic.configure) | 0 | ||||
-rw-r--r-- | extensions/openstack-keystone.configure (renamed from openstack-keystone.configure) | 0 | ||||
-rw-r--r-- | extensions/openstack-network.configure (renamed from openstack-network.configure) | 0 | ||||
-rw-r--r-- | extensions/openstack-neutron.configure (renamed from openstack-neutron.configure) | 0 | ||||
-rw-r--r-- | extensions/openstack-nova.configure (renamed from openstack-nova.configure) | 0 | ||||
-rw-r--r-- | extensions/openstack-swift-controller.configure (renamed from openstack-swift-controller.configure) | 0 | ||||
-rwxr-xr-x | extensions/openstack.check | 90 | ||||
-rwxr-xr-x | extensions/openstack.write | 93 | ||||
-rw-r--r-- | extensions/openstack.write.help | 51 | ||||
-rwxr-xr-x | extensions/pxeboot.check (renamed from pxeboot.check) | 0 | ||||
-rw-r--r-- | extensions/pxeboot.write (renamed from pxeboot.write) | 0 | ||||
-rw-r--r-- | extensions/pxeboot.write.help (renamed from pxeboot.write.help) | 0 | ||||
-rwxr-xr-x | extensions/rawdisk.check | 53 | ||||
-rwxr-xr-x | extensions/rawdisk.write | 108 | ||||
-rw-r--r-- | extensions/rawdisk.write.help | 82 | ||||
-rwxr-xr-x | extensions/sdk.write (renamed from sdk.write) | 0 | ||||
-rwxr-xr-x | extensions/set-hostname.configure | 26 | ||||
-rwxr-xr-x | extensions/simple-network.configure | 292 | ||||
-rwxr-xr-x | extensions/ssh-rsync.check | 64 | ||||
-rwxr-xr-x | extensions/ssh-rsync.write | 172 | ||||
-rw-r--r-- | extensions/ssh-rsync.write.help | 50 | ||||
-rwxr-xr-x | extensions/sshkeys.configure | 25 | ||||
-rwxr-xr-x | extensions/strip-gplv3.configure (renamed from strip-gplv3.configure) | 0 | ||||
-rw-r--r-- | extensions/swift-build-rings.yml (renamed from swift-build-rings.yml) | 0 | ||||
-rwxr-xr-x | extensions/swift-storage-devices-validate.py (renamed from swift-storage-devices-validate.py) | 0 | ||||
-rw-r--r-- | extensions/swift-storage.configure (renamed from swift-storage.configure) | 0 | ||||
-rwxr-xr-x | extensions/sysroot.check | 23 | ||||
-rwxr-xr-x | extensions/sysroot.write | 22 | ||||
-rwxr-xr-x | extensions/tar.check | 23 | ||||
-rwxr-xr-x | extensions/tar.write | 20 | ||||
-rw-r--r-- | extensions/tar.write.help | 19 | ||||
-rwxr-xr-x | extensions/trove.configure (renamed from trove.configure) | 0 | ||||
-rw-r--r-- | extensions/trove.configure.help (renamed from trove.configure.help) | 0 | ||||
-rw-r--r-- | extensions/vagrant.configure (renamed from vagrant.configure) | 0 | ||||
-rwxr-xr-x | extensions/vdaboot.configure | 33 | ||||
-rwxr-xr-x | extensions/virtualbox-ssh.check | 36 | ||||
-rwxr-xr-x | extensions/virtualbox-ssh.write | 211 | ||||
-rw-r--r-- | extensions/virtualbox-ssh.write.help | 135 | ||||
-rw-r--r-- | install-files/chef/manifest (renamed from chef/manifest) | 0 | ||||
-rwxr-xr-x | install-files/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator (renamed from distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator) | 0 | ||||
-rw-r--r-- | install-files/distbuild/manifest (renamed from distbuild/manifest) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/lib/distbuild-setup/ansible/distbuild-setup.yml (renamed from distbuild/usr/lib/distbuild-setup/ansible/distbuild-setup.yml) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/lib/distbuild-setup/ansible/hosts (renamed from mason/ansible/hosts) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/lib/systemd/system/distbuild-setup.service (renamed from distbuild/usr/lib/systemd/system/distbuild-setup.service) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/lib/systemd/system/morph-cache-server.service (renamed from distbuild/usr/lib/systemd/system/morph-cache-server.service) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/lib/systemd/system/morph-controller-helper.service (renamed from distbuild/usr/lib/systemd/system/morph-controller-helper.service) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/lib/systemd/system/morph-controller.service (renamed from distbuild/usr/lib/systemd/system/morph-controller.service) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/lib/systemd/system/morph-worker-helper.service (renamed from distbuild/usr/lib/systemd/system/morph-worker-helper.service) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/lib/systemd/system/morph-worker.service (renamed from distbuild/usr/lib/systemd/system/morph-worker.service) | 0 | ||||
l--------- | install-files/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service (renamed from distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/share/distbuild-setup/morph-cache-server.conf (renamed from distbuild/usr/share/distbuild-setup/morph-cache-server.conf) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf (renamed from distbuild/usr/share/distbuild-setup/morph-controller-helper.conf) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/share/distbuild-setup/morph-controller.conf (renamed from distbuild/usr/share/distbuild-setup/morph-controller.conf) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf (renamed from distbuild/usr/share/distbuild-setup/morph-worker-helper.conf) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/share/distbuild-setup/morph-worker.conf (renamed from distbuild/usr/share/distbuild-setup/morph-worker.conf) | 0 | ||||
-rw-r--r-- | install-files/distbuild/usr/share/distbuild-setup/morph.conf (renamed from distbuild/usr/share/distbuild-setup/morph.conf) | 0 | ||||
-rw-r--r-- | install-files/essential-files/etc/inputrc (renamed from essential-files/etc/inputrc) | 0 | ||||
-rw-r--r-- | install-files/essential-files/etc/os-release (renamed from essential-files/etc/os-release) | 0 | ||||
-rw-r--r-- | install-files/essential-files/etc/profile (renamed from essential-files/etc/profile) | 0 | ||||
-rw-r--r-- | install-files/essential-files/manifest (renamed from essential-files/manifest) | 0 | ||||
-rw-r--r-- | install-files/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf (renamed from essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf) | 0 | ||||
l--------- | install-files/genivi-devel-system-armv7/etc/morph.conf (renamed from genivi-devel-system-armv7/etc/morph.conf) | 0 | ||||
-rw-r--r-- | install-files/genivi-devel-system-armv7/manifest (renamed from genivi-devel-system-armv7/manifest) | 0 | ||||
-rw-r--r-- | install-files/genivi-devel-system-armv7/src/morph.conf (renamed from genivi-devel-system-armv7/src/morph.conf) | 0 | ||||
-rw-r--r-- | install-files/moonshot/boot/m400-1003.dtb (renamed from moonshot/boot/m400-1003.dtb) | bin | 18063 -> 18063 bytes | |||
-rw-r--r-- | install-files/moonshot/manifest (renamed from moonshot/manifest) | 0 | ||||
-rw-r--r-- | install-files/openstack/etc/horizon/apache-horizon.conf (renamed from openstack/etc/horizon/apache-horizon.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/etc/horizon/openstack_dashboard/local_settings.py (renamed from openstack/etc/horizon/openstack_dashboard/local_settings.py) | 0 | ||||
-rw-r--r-- | install-files/openstack/etc/tempest/tempest.conf (renamed from openstack/etc/tempest/tempest.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/manifest (renamed from openstack/manifest) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/sysctl.d/neutron.conf (renamed from openstack/usr/lib/sysctl.d/neutron.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/apache-httpd.service (renamed from openstack/usr/lib/systemd/system/apache-httpd.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/iscsi-setup.service (renamed from openstack/usr/lib/systemd/system/iscsi-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-api.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-central.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service (renamed from openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-cinder-api.service (renamed from openstack/usr/lib/systemd/system/openstack-cinder-api.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-cinder-backup.service (renamed from openstack/usr/lib/systemd/system/openstack-cinder-backup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service (renamed from openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-cinder-volume.service (renamed from openstack/usr/lib/systemd/system/openstack-cinder-volume.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-glance-api.service (renamed from openstack/usr/lib/systemd/system/openstack-glance-api.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-glance-registry.service (renamed from openstack/usr/lib/systemd/system/openstack-glance-registry.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-glance-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-glance-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-horizon-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-horizon-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ironic-api.service (renamed from openstack/usr/lib/systemd/system/openstack-ironic-api.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service (renamed from openstack/usr/lib/systemd/system/openstack-ironic-conductor.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-ironic-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-ironic-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-keystone-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-keystone-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-keystone.service (renamed from openstack/usr/lib/systemd/system/openstack-keystone.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-network-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-network-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service (renamed from openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service (renamed from openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service (renamed from openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service (renamed from openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service (renamed from openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-neutron-server.service (renamed from openstack/usr/lib/systemd/system/openstack-neutron-server.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-api.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-api.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-cert.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-cert.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-compute.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-compute.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-conductor.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-conductor.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-config-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-db-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-scheduler.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service (renamed from openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openvswitch-db-server.service (renamed from openstack/usr/lib/systemd/system/openvswitch-db-server.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openvswitch-setup.service (renamed from openstack/usr/lib/systemd/system/openvswitch-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/openvswitch.service (renamed from openstack/usr/lib/systemd/system/openvswitch.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/postgres-server-setup.service (renamed from openstack/usr/lib/systemd/system/postgres-server-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/postgres-server.service (renamed from openstack/usr/lib/systemd/system/postgres-server.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/rabbitmq-server.service (renamed from openstack/usr/lib/systemd/system/rabbitmq-server.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/swift-controller-setup.service (renamed from openstack/usr/lib/systemd/system/swift-controller-setup.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/lib/systemd/system/swift-proxy.service (renamed from openstack/usr/lib/systemd/system/swift-proxy.service) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/ceilometer-config.yml (renamed from openstack/usr/share/openstack/ceilometer-config.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/ceilometer-db.yml (renamed from openstack/usr/share/openstack/ceilometer-db.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/ceilometer/ceilometer.conf (renamed from openstack/usr/share/openstack/ceilometer/ceilometer.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/cinder-config.yml (renamed from openstack/usr/share/openstack/cinder-config.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/cinder-db.yml (renamed from openstack/usr/share/openstack/cinder-db.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/cinder-lvs.yml (renamed from openstack/usr/share/openstack/cinder-lvs.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/cinder/api-paste.ini (renamed from openstack/usr/share/openstack/cinder/api-paste.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/cinder/cinder.conf (renamed from openstack/usr/share/openstack/cinder/cinder.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/cinder/policy.json (renamed from openstack/usr/share/openstack/cinder/policy.json) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/extras/00-disable-device.network (renamed from openstack/usr/share/openstack/extras/00-disable-device.network) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/extras/60-device-dhcp.network (renamed from openstack/usr/share/openstack/extras/60-device-dhcp.network) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance.yml (renamed from openstack/usr/share/openstack/glance.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/glance-api-paste.ini (renamed from openstack/usr/share/openstack/glance/glance-api-paste.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/glance-api.conf (renamed from openstack/usr/share/openstack/glance/glance-api.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/glance-cache.conf (renamed from openstack/usr/share/openstack/glance/glance-cache.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/glance-registry-paste.ini (renamed from openstack/usr/share/openstack/glance/glance-registry-paste.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/glance-registry.conf (renamed from openstack/usr/share/openstack/glance/glance-registry.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/glance-scrubber.conf (renamed from openstack/usr/share/openstack/glance/glance-scrubber.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/logging.conf (renamed from openstack/usr/share/openstack/glance/logging.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/policy.json (renamed from openstack/usr/share/openstack/glance/policy.json) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/glance/schema-image.json (renamed from openstack/usr/share/openstack/glance/schema-image.json) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/horizon.yml (renamed from openstack/usr/share/openstack/horizon.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/hosts (renamed from openstack/usr/share/openstack/hosts) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/ironic.yml (renamed from openstack/usr/share/openstack/ironic.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/ironic/ironic.conf (renamed from openstack/usr/share/openstack/ironic/ironic.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/ironic/policy.json (renamed from openstack/usr/share/openstack/ironic/policy.json) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/iscsi.yml (renamed from openstack/usr/share/openstack/iscsi.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/keystone.yml (renamed from openstack/usr/share/openstack/keystone.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/keystone/keystone-paste.ini (renamed from openstack/usr/share/openstack/keystone/keystone-paste.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/keystone/keystone.conf (renamed from openstack/usr/share/openstack/keystone/keystone.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/keystone/logging.conf (renamed from openstack/usr/share/openstack/keystone/logging.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/keystone/policy.json (renamed from openstack/usr/share/openstack/keystone/policy.json) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/network.yml (renamed from openstack/usr/share/openstack/network.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron-config.yml (renamed from openstack/usr/share/openstack/neutron-config.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron-db.yml (renamed from openstack/usr/share/openstack/neutron-db.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/api-paste.ini (renamed from openstack/usr/share/openstack/neutron/api-paste.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/dhcp_agent.ini (renamed from openstack/usr/share/openstack/neutron/dhcp_agent.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/fwaas_driver.ini (renamed from openstack/usr/share/openstack/neutron/fwaas_driver.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/l3_agent.ini (renamed from openstack/usr/share/openstack/neutron/l3_agent.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/lbaas_agent.ini (renamed from openstack/usr/share/openstack/neutron/lbaas_agent.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/metadata_agent.ini (renamed from openstack/usr/share/openstack/neutron/metadata_agent.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/metering_agent.ini (renamed from openstack/usr/share/openstack/neutron/metering_agent.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/neutron.conf (renamed from openstack/usr/share/openstack/neutron/neutron.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/restproxy.ini (renamed from openstack/usr/share/openstack/neutron/plugins/bigswitch/restproxy.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/ca_certs/README (renamed from openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/ca_certs/README) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/host_certs/README (renamed from openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/host_certs/README) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/brocade/brocade.ini (renamed from openstack/usr/share/openstack/neutron/plugins/brocade/brocade.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_cfg_agent.ini (renamed from openstack/usr/share/openstack/neutron/plugins/cisco/cisco_cfg_agent.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_plugins.ini (renamed from openstack/usr/share/openstack/neutron/plugins/cisco/cisco_plugins.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_router_plugin.ini (renamed from openstack/usr/share/openstack/neutron/plugins/cisco/cisco_router_plugin.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_vpn_agent.ini (renamed from openstack/usr/share/openstack/neutron/plugins/cisco/cisco_vpn_agent.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/embrane/heleos_conf.ini (renamed from openstack/usr/share/openstack/neutron/plugins/embrane/heleos_conf.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/hyperv/hyperv_neutron_plugin.ini (renamed from openstack/usr/share/openstack/neutron/plugins/hyperv/hyperv_neutron_plugin.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ibm/sdnve_neutron_plugin.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ibm/sdnve_neutron_plugin.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/linuxbridge/linuxbridge_conf.ini (renamed from openstack/usr/share/openstack/neutron/plugins/linuxbridge/linuxbridge_conf.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/metaplugin/metaplugin.ini (renamed from openstack/usr/share/openstack/neutron/plugins/metaplugin/metaplugin.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/midonet/midonet.ini (renamed from openstack/usr/share/openstack/neutron/plugins/midonet/midonet.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_arista.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_arista.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_brocade.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_brocade.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_cisco.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_cisco.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_fslsdn.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_fslsdn.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_mlnx.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_mlnx.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ncs.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ncs.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_odl.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_odl.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ofa.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ofa.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_sriov.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_sriov.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/mlnx/mlnx_conf.ini (renamed from openstack/usr/share/openstack/neutron/plugins/mlnx/mlnx_conf.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/nec/nec.ini (renamed from openstack/usr/share/openstack/neutron/plugins/nec/nec.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/nuage/nuage_plugin.ini (renamed from openstack/usr/share/openstack/neutron/plugins/nuage/nuage_plugin.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/oneconvergence/nvsdplugin.ini (renamed from openstack/usr/share/openstack/neutron/plugins/oneconvergence/nvsdplugin.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/opencontrail/contrailplugin.ini (renamed from openstack/usr/share/openstack/neutron/plugins/opencontrail/contrailplugin.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/openvswitch/ovs_neutron_plugin.ini (renamed from openstack/usr/share/openstack/neutron/plugins/openvswitch/ovs_neutron_plugin.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/plumgrid/plumgrid.ini (renamed from openstack/usr/share/openstack/neutron/plugins/plumgrid/plumgrid.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini (renamed from openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/plugins/vmware/nsx.ini (renamed from openstack/usr/share/openstack/neutron/plugins/vmware/nsx.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/policy.json (renamed from openstack/usr/share/openstack/neutron/policy.json) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/neutron/vpn_agent.ini (renamed from openstack/usr/share/openstack/neutron/vpn_agent.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/nova-config.yml (renamed from openstack/usr/share/openstack/nova-config.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/nova-db.yml (renamed from openstack/usr/share/openstack/nova-db.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/nova/api-paste.ini (renamed from openstack/usr/share/openstack/nova/api-paste.ini) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/nova/cells.json (renamed from openstack/usr/share/openstack/nova/cells.json) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/nova/logging.conf (renamed from openstack/usr/share/openstack/nova/logging.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/nova/nova-compute.conf (renamed from openstack/usr/share/openstack/nova/nova-compute.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/nova/nova.conf (renamed from openstack/usr/share/openstack/nova/nova.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/nova/policy.json (renamed from openstack/usr/share/openstack/nova/policy.json) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/openvswitch.yml (renamed from openstack/usr/share/openstack/openvswitch.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/postgres.yml (renamed from openstack/usr/share/openstack/postgres.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/postgres/pg_hba.conf (renamed from openstack/usr/share/openstack/postgres/pg_hba.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/postgres/postgresql.conf (renamed from openstack/usr/share/openstack/postgres/postgresql.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf (renamed from openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq.config (renamed from openstack/usr/share/openstack/rabbitmq/rabbitmq.config) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/openstack/swift-controller.yml (renamed from openstack/usr/share/openstack/swift-controller.yml) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/swift/etc/rsyncd.j2 (renamed from openstack/usr/share/swift/etc/rsyncd.j2) | 0 | ||||
-rw-r--r-- | install-files/openstack/usr/share/swift/etc/swift/proxy-server.j2 (renamed from openstack/usr/share/swift/etc/swift/proxy-server.j2) | 0 | ||||
-rw-r--r-- | install-files/swift/etc/ntp.conf (renamed from swift/etc/ntp.conf) | 0 | ||||
-rw-r--r-- | install-files/swift/manifest (renamed from swift/manifest) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/lib/systemd/system/rsync.service (renamed from swift/usr/lib/systemd/system/rsync.service) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/lib/systemd/system/swift-storage-setup.service (renamed from swift/usr/lib/systemd/system/swift-storage-setup.service) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/lib/systemd/system/swift-storage.service (renamed from swift/usr/lib/systemd/system/swift-storage.service) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/share/swift/etc/rsyncd.j2 (renamed from swift/usr/share/swift/etc/rsyncd.j2) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/share/swift/etc/swift/account-server.j2 (renamed from swift/usr/share/swift/etc/swift/account-server.j2) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/share/swift/etc/swift/container-server.j2 (renamed from swift/usr/share/swift/etc/swift/container-server.j2) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/share/swift/etc/swift/object-server.j2 (renamed from swift/usr/share/swift/etc/swift/object-server.j2) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/share/swift/etc/swift/swift.j2 (renamed from swift/usr/share/swift/etc/swift/swift.j2) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/share/swift/hosts (renamed from swift/usr/share/swift/hosts) | 0 | ||||
-rw-r--r-- | install-files/swift/usr/share/swift/swift-storage.yml (renamed from swift/usr/share/swift/swift-storage.yml) | 0 | ||||
-rw-r--r-- | install-files/vagrant-files/home/vagrant/.ssh/authorized_keys (renamed from vagrant-files/home/vagrant/.ssh/authorized_keys) | 0 | ||||
-rw-r--r-- | install-files/vagrant-files/manifest (renamed from vagrant-files/manifest) | 0 | ||||
-rw-r--r-- | systems/armv7lhf-cross-toolchain-system-x86_32.morph | 12 | ||||
-rw-r--r-- | systems/armv7lhf-cross-toolchain-system-x86_64.morph | 12 | ||||
-rw-r--r-- | systems/base-system-armv7-highbank.morph | 10 | ||||
-rw-r--r-- | systems/base-system-armv7-versatile.morph | 10 | ||||
-rw-r--r-- | systems/base-system-armv7b-highbank.morph | 10 | ||||
-rw-r--r-- | systems/base-system-armv7b-vexpress-tc2.morph | 10 | ||||
-rw-r--r-- | systems/base-system-armv7lhf-highbank.morph | 10 | ||||
-rw-r--r-- | systems/base-system-armv8b64.morph | 12 | ||||
-rw-r--r-- | systems/base-system-armv8l64.morph | 12 | ||||
-rw-r--r-- | systems/base-system-ppc64-generic.morph | 10 | ||||
-rw-r--r-- | systems/base-system-x86_32-generic.morph | 10 | ||||
-rw-r--r-- | systems/base-system-x86_64-generic.morph | 10 | ||||
-rw-r--r-- | systems/build-system-armv5l-openbmc-aspeed.morph | 12 | ||||
-rw-r--r-- | systems/build-system-armv7lhf-highbank.morph | 18 | ||||
-rw-r--r-- | systems/build-system-armv7lhf-jetson.morph | 18 | ||||
-rw-r--r-- | systems/build-system-armv8b64.morph | 20 | ||||
-rw-r--r-- | systems/build-system-armv8l64.morph | 20 | ||||
-rw-r--r-- | systems/build-system-ppc64.morph | 18 | ||||
-rw-r--r-- | systems/build-system-x86_32-chroot.morph | 18 | ||||
-rw-r--r-- | systems/build-system-x86_32.morph | 18 | ||||
-rw-r--r-- | systems/build-system-x86_64-chroot.morph | 18 | ||||
-rw-r--r-- | systems/build-system-x86_64.morph | 18 | ||||
-rw-r--r-- | systems/ceph-service-x86_64-generic.morph | 14 | ||||
-rw-r--r-- | systems/chef-system-x86_64-container.morph (renamed from chef-system-x86_64-container.morph) | 12 | ||||
-rw-r--r-- | systems/cxmanage-system-x86_64-generic.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7-chroot.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7-highbank.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7-versatile.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7-wandboard.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7b-chroot.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7b-highbank.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7lhf-chroot.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7lhf-highbank.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7lhf-jetson.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv7lhf-wandboard.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-armv8b64.morph | 16 | ||||
-rw-r--r-- | systems/devel-system-armv8l64.morph | 18 | ||||
-rw-r--r-- | systems/devel-system-ppc64-chroot.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-ppc64-generic.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-x86_32-chroot.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-x86_32-generic.morph | 14 | ||||
-rw-r--r-- | systems/devel-system-x86_64-chroot.morph | 12 | ||||
-rw-r--r-- | systems/devel-system-x86_64-generic.morph | 16 | ||||
-rw-r--r-- | systems/devel-system-x86_64-vagrant.morph | 14 | ||||
-rw-r--r-- | systems/genivi-baseline-system-armv7lhf-jetson.morph | 14 | ||||
-rw-r--r-- | systems/genivi-baseline-system-armv7lhf-versatile.morph | 14 | ||||
-rw-r--r-- | systems/genivi-baseline-system-x86_64-generic.morph | 12 | ||||
-rw-r--r-- | systems/installer-system-armv8b64.morph | 12 | ||||
-rw-r--r-- | systems/installer-system-x86_64.morph | 10 | ||||
-rw-r--r-- | systems/minimal-system-armv5l-openbmc-aspeed.morph | 12 | ||||
-rw-r--r-- | systems/minimal-system-x86_32-generic.morph | 12 | ||||
-rw-r--r-- | systems/minimal-system-x86_64-generic.morph | 12 | ||||
-rw-r--r-- | systems/nodejs-system-x86_64.morph | 10 | ||||
-rw-r--r-- | systems/ocaml-system-x86_64.morph | 8 | ||||
-rw-r--r-- | systems/openstack-system-x86_64.morph | 34 | ||||
-rw-r--r-- | systems/qt4-devel-system-x86_64-generic.morph | 10 | ||||
-rw-r--r-- | systems/qt5-devel-system-x86_64-generic.morph | 10 | ||||
-rw-r--r-- | systems/swift-system-x86_64.morph | 16 | ||||
-rw-r--r-- | systems/trove-system-x86_64.morph | 14 | ||||
-rw-r--r-- | systems/web-system-x86_64-generic.morph | 10 | ||||
-rw-r--r-- | systems/weston-system-armv7lhf-jetson.morph | 10 | ||||
-rw-r--r-- | systems/weston-system-x86_64-generic.morph | 10 | ||||
-rw-r--r-- | systems/xfce-system.morph | 10 | ||||
-rw-r--r-- | systems/zookeeper-client-x86_64.morph | 12 | ||||
-rw-r--r-- | systems/zookeeper-server-x86_64.morph | 12 |
376 files changed, 3814 insertions, 512 deletions
diff --git a/clusters/cephclient.morph b/clusters/cephclient.morph index b4db22e0..2585fbdf 100644 --- a/clusters/cephclient.morph +++ b/clusters/cephclient.morph @@ -4,7 +4,7 @@ systems: - morph: systems/ceph-service-x86_64-generic.morph deploy: ceph-node-virtualbox-image: - type: virtualbox-ssh + type: extensions/virtualbox-ssh SYSTEM: systems/ceph-service-x86_64-generic.morph location: vbox+ssh://user@machine/ChefNode4/home/user/chefnode4.vdi # HOST_IPADDR and NETMASK should be set to the IP address and netmask of the virtualbox host on the host-only interface. @@ -17,4 +17,4 @@ systems: HOSTNAME: CephNode4 # You must install authorized_keys in chef/root/.ssh/ before this will work. - INSTALL_FILES: chef/manifest + INSTALL_FILES: install-files/chef/manifest diff --git a/clusters/ci.morph b/clusters/ci.morph index cb56328c..69b7c76a 100644 --- a/clusters/ci.morph +++ b/clusters/ci.morph @@ -9,19 +9,19 @@ systems: - morph: systems/devel-system-x86_64-generic.morph deploy: devel-system-x86_64-generic: - type: rawdisk + type: extensions/rawdisk location: devel-system-x86_64-generic.img DISK_SIZE: 4G - morph: systems/devel-system-x86_32-generic.morph deploy: devel-system-x86_32-generic: - type: rawdisk + type: extensions/rawdisk location: devel-system-x86_32-generic.img DISK_SIZE: 4G - morph: systems/build-system-armv7lhf-jetson.morph deploy: build-system-armv7lhf-jetson: - type: rawdisk + type: extensions/rawdisk location: build-system-armv7lhf-jetson.img DISK_SIZE: 2G BOOT_DEVICE: "/dev/mmcblk0p1" @@ -33,14 +33,14 @@ systems: - morph: systems/weston-system-x86_64-generic.morph deploy: weston-system-x86_64-generic: - type: rawdisk + type: extensions/rawdisk location: weston-system-x86_64-generic.img DISK_SIZE: 4G KERNEL_ARGS: vga=788 - morph: systems/weston-system-armv7lhf-jetson.morph deploy: weston-system-armv7lhf-jetson: - type: rawdisk + type: extensions/rawdisk location: weston-system-armv7lhf-jetson.img DISK_SIZE: 4G BOOT_DEVICE: "/dev/mmcblk0p1" @@ -52,14 +52,14 @@ systems: - morph: systems/genivi-baseline-system-x86_64-generic.morph deploy: genivi-baseline-system-x86_64-generic: - type: rawdisk + type: extensions/rawdisk location: genivi-baseline-system-x86_64-generic.img DISK_SIZE: 4G KERNEL_ARGS: vga=788 - morph: systems/genivi-baseline-system-armv7lhf-jetson.morph deploy: genivi-baseline-system-armv7lhf-jetson: - type: rawdisk + type: extensions/rawdisk location: genivi-baseline-system-armv7lhf-jetson.img DISK_SIZE: 4G BOOT_DEVICE: "/dev/mmcblk0p1" @@ -71,10 +71,10 @@ systems: - morph: systems/openstack-system-x86_64.morph deploy: openstack-system-x86_64: - type: rawdisk + type: extensions/rawdisk location: baserock-openstack-system-x86_64.img DISK_SIZE: 5G - INSTALL_FILES: openstack/manifest + INSTALL_FILES: install-files/openstack/manifest HOSTNAME: onenode RABBITMQ_HOST: onenode RABBITMQ_PORT: 5672 diff --git a/clusters/example-distbuild-cluster.morph b/clusters/example-distbuild-cluster.morph index 513c16c5..5208a5ca 100644 --- a/clusters/example-distbuild-cluster.morph +++ b/clusters/example-distbuild-cluster.morph @@ -16,22 +16,22 @@ systems: DISTBUILD_CONTROLLER: false DISTBUILD_WORKER: true FSTAB_SRC: LABEL=src /srv/distbuild auto defaults,rw,noatime 0 2 - INSTALL_FILES: distbuild/manifest + INSTALL_FILES: install-files/distbuild/manifest NFSBOOT_CONFIGURE: true TROVE_ID: $MY_TROVE WORKER_SSH_KEY: ssh-keys/worker.key deploy: build-controller: - type: nfsboot + type: extensions/nfsboot location: $MY_TROVE DISTBUILD_CONTROLLER: true HOSTNAME: build-controller WORKERS: build-node-1, build-node-2 build-node-1: - type: nfsboot + type: extensions/nfsboot location: $MY_TROVE HOSTNAME: build-node-1 build-node-2: - type: nfsboot + type: extensions/nfsboot location: $MY_TROVE HOSTNAME: build-node-2 diff --git a/clusters/example-swift-storage-cluster.morph b/clusters/example-swift-storage-cluster.morph index b1ea784f..e5e7b6ab 100644 --- a/clusters/example-swift-storage-cluster.morph +++ b/clusters/example-swift-storage-cluster.morph @@ -3,7 +3,7 @@ kind: cluster systems: - morph: systems/swift-system-x86_64.morph deploy-defaults: - INSTALL_FILES: swift/manifest + INSTALL_FILES: install-files/swift/manifest CONTROLLER_HOST_ADDRESS: <controller host address> @@ -39,7 +39,7 @@ systems: deploy: node0: - type: kvm + type: extensions/kvm location: kvm+ssh://user@host/swift-storage-0/home/user/swift-storage-0.img DISK_SIZE: 10G RAM_SIZE: 1G @@ -50,7 +50,7 @@ systems: MANAGEMENT_INTERFACE_IP_ADDRESS: <node0 management ip> ATTACH_DISKS: /dev/node0_sdb:/dev/node0_sdc:/dev/node0_sdd node1: - type: kvm + type: extensions/kvm location: kvm+ssh://user@host/swift-storage-1/home/user/swift-storage-1.img DISK_SIZE: 10G RAM_SIZE: 1G diff --git a/clusters/hardware-deployment.morph b/clusters/hardware-deployment.morph index c6b7dce9..674d6587 100644 --- a/clusters/hardware-deployment.morph +++ b/clusters/hardware-deployment.morph @@ -8,7 +8,7 @@ systems: - morph: systems/installer-system-x86_64.morph deploy: installer: - type: pxeboot + type: extensions/pxeboot location: AB:CD:EF:12:34:56:78 #MAC address. PXEBOOT_MODE: spawn-novlan PXEBOOT_DEPLOYER_INTERFACE: ens6 @@ -23,7 +23,7 @@ systems: - morph: systems/build-system-x86_64.morph deploy: to-install: - type: sysroot + type: extensions/sysroot location: /rootfs INITRAMFS_PATH: boot/initramfs.gz KERNEL_ARGS: console=ttyS1,9600 console=tty0 @@ -31,5 +31,5 @@ systems: - morph: systems/initramfs-x86_64.morph deploy: initramfs: - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz diff --git a/clusters/image-package-example.morph b/clusters/image-package-example.morph index fd8487e2..ca79ec97 100644 --- a/clusters/image-package-example.morph +++ b/clusters/image-package-example.morph @@ -6,7 +6,7 @@ systems: - morph: systems/base-system-x86_32-generic.morph deploy: imgpkg: - type: image-package + type: extensions/image-package location: image-package-example.tar BOOTLOADER_BLOBS: /usr/share/syslinux/mbr.bin - INCLUDE_SCRIPTS: image-package-example/make-disk-image.sh.in:image-package-example/disk-install.sh.in:image-package-example/common.sh.in + INCLUDE_SCRIPTS: extensions/image-package-example/make-disk-image.sh.in:extensions/image-package-example/disk-install.sh.in:extensions/image-package-example/common.sh.in diff --git a/clusters/initramfs-test.morph b/clusters/initramfs-test.morph index afc94961..dd7d91e1 100644 --- a/clusters/initramfs-test.morph +++ b/clusters/initramfs-test.morph @@ -4,7 +4,7 @@ systems: - morph: systems/base-system-x86_64-generic.morph deploy: system: - type: rawdisk + type: extensions/rawdisk location: initramfs-system-x86_64.img DISK_SIZE: 1G HOSTNAME: initramfs-system @@ -13,5 +13,5 @@ systems: - morph: systems/initramfs-x86_64.morph deploy: initramfs: - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz diff --git a/clusters/installer-build-system-x86_64.morph b/clusters/installer-build-system-x86_64.morph index a9ebcaca..d9a2a28b 100644 --- a/clusters/installer-build-system-x86_64.morph +++ b/clusters/installer-build-system-x86_64.morph @@ -24,7 +24,7 @@ systems: - morph: systems/installer-system-x86_64.morph deploy: installer: - type: rawdisk + type: extensions/rawdisk location: installer-build-system-x86_64.img KERNEL_ARGS: init=/usr/lib/baserock-installer/installer DISK_SIZE: 6G @@ -36,17 +36,17 @@ systems: - morph: systems/initramfs-x86_64.morph deploy: installer-initramfs: - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz - morph: systems/build-system-x86_64.morph deploy: to-install: - type: sysroot + type: extensions/sysroot location: /rootfs INITRAMFS_PATH: boot/initramfs.gz subsystems: - morph: systems/initramfs-x86_64.morph deploy: to-install-initramfs: - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz diff --git a/clusters/jetson-upgrade.morph b/clusters/jetson-upgrade.morph index 9fd5155b..e6ec97e0 100644 --- a/clusters/jetson-upgrade.morph +++ b/clusters/jetson-upgrade.morph @@ -14,5 +14,5 @@ systems: FSTAB_SRC: LABEL=src /src auto defaults,rw,noatime,nofail 0 2 deploy: self: - type: ssh-rsync + type: extensions/ssh-rsync location: root@127.0.0.1 diff --git a/clusters/mason-openstack.morph b/clusters/mason-openstack.morph index 6ef14888..935e2496 100644 --- a/clusters/mason-openstack.morph +++ b/clusters/mason-openstack.morph @@ -10,7 +10,7 @@ systems: CONTROLLERHOST: controller-hostname DISTBUILD_CONTROLLER: true DISTBUILD_WORKER: true - INSTALL_FILES: distbuild/manifest + INSTALL_FILES: install-files/distbuild/manifest RAM_SIZE: 8G TROVE_HOST: your-upstream-trove TROVE_ID: your-upstream-trove-prefix @@ -18,7 +18,7 @@ systems: WORKER_SSH_KEY: ssh-keys/worker.key deploy: mason-openstack: - type: openstack + type: extensions/openstack location: openstack-auth-url (eg example.com:5000/v2.0) DISK_SIZE: 6G DISTBUILD_CONTROLLER: true diff --git a/clusters/mason.morph b/clusters/mason.morph index 9717239d..376cf337 100644 --- a/clusters/mason.morph +++ b/clusters/mason.morph @@ -11,7 +11,7 @@ systems: - morph: systems/trove-system-x86_64.morph deploy: red-box-v1-trove: - type: kvm + type: extensions/kvm location: kvm+ssh://vm-user@vm-host/red-box-v1-trove/vm-path/red-box-v1-trove.img AUTOSTART: true DISK_SIZE: 20G @@ -36,7 +36,7 @@ systems: CONTROLLERHOST: red-box-v1-controller.example.com DISTBUILD_CONTROLLER: false DISTBUILD_WORKER: true - INSTALL_FILES: distbuild/manifest + INSTALL_FILES: install-files/distbuild/manifest RAM_SIZE: 8G TROVE_HOST: upstream-trove TROVE_ID: upstream-trove @@ -44,7 +44,7 @@ systems: WORKER_SSH_KEY: ssh_keys/worker.key deploy: red-box-v1-controller: - type: kvm + type: extensions/kvm location: kvm+ssh://vm-user@vm-host/red-box-v1-controller/vm-path/red-box-v1-controller.img DISK_SIZE: 60G DISTBUILD_CONTROLLER: true diff --git a/clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph b/clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph index eea600cf..9647e7a7 100644 --- a/clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph +++ b/clusters/minimal-system-armv5l-openbmc-aspeed-deploy.morph @@ -4,7 +4,7 @@ systems: - morph: systems/minimal-system-armv5l-openbmc-aspeed.morph deploy: minimal-system-armv5l-openbmc-aspeed: - type: jffs2 + type: extensions/jffs2 location: minimal-system-armv5l-openbmc-aspeed.img ROOT_DEVICE: "/dev/mtdblock" BOOTLOADER_CONFIG_FORMAT: "extlinux" diff --git a/clusters/minimal-system-deploy.morph b/clusters/minimal-system-deploy.morph index 06629ffc..cf8de54f 100644 --- a/clusters/minimal-system-deploy.morph +++ b/clusters/minimal-system-deploy.morph @@ -6,7 +6,7 @@ systems: - morph: systems/minimal-system-x86_32-generic.morph deploy: vm: - type: kvm + type: extensions/kvm location: kvm+ssh://192.168.122.1/tiny-x86_32/srv/VMs/tiny-x86_32.img DISK_SIZE: 512M HOSTNAME: tiny-x86_32 diff --git a/clusters/moonshot-m2-armv8b64.morph b/clusters/moonshot-m2-armv8b64.morph index c8e5bc81..c6d62ca2 100644 --- a/clusters/moonshot-m2-armv8b64.morph +++ b/clusters/moonshot-m2-armv8b64.morph @@ -8,7 +8,7 @@ systems: - morph: systems/installer-system-armv8b64.morph deploy: installer: - type: pxeboot + type: extensions/pxeboot location: 14:58:d0:57:7f:42 PXEBOOT_MODE: existing-server PXEBOOT_CONFIG_TFTP_ADDRESS: sftp://192.168.0.1/srv/nfsboot/tftp/ @@ -38,17 +38,17 @@ systems: HOSTNAME: installer-system-c31n1 DTB_PATH: boot/m400-1003.dtb KERNEL_ARGS: console=ttyS0,9600n8r init=/usr/lib/baserock-installer/installer - INSTALL_FILES: moonshot/manifest + INSTALL_FILES: install-files/moonshot/manifest MOONSHOT_KERNEL: yes subsystems: - morph: systems/devel-system-armv8b64.morph deploy: to-install: - type: sysroot + type: extensions/sysroot location: /rootfs HOSTNAME: baserock-c31n1 DTB_PATH: boot/m400-1003.dtb - INSTALL_FILES: moonshot/manifest + INSTALL_FILES: install-files/moonshot/manifest MOONSHOT_KERNEL: yes BOOT_DEVICE: /dev/sda1 ROOT_DEVICE: /dev/sda2 diff --git a/clusters/moonshot-pxe-armv8b64.morph b/clusters/moonshot-pxe-armv8b64.morph index 2d32efb0..ffee0392 100644 --- a/clusters/moonshot-pxe-armv8b64.morph +++ b/clusters/moonshot-pxe-armv8b64.morph @@ -9,7 +9,7 @@ systems: - morph: systems/devel-system-armv8b64.morph deploy: netboot: - type: pxeboot + type: extensions/pxeboot location: 14:58:d0:57:7f:42 PXEBOOT_MODE: existing-server PXEBOOT_CONFIG_TFTP_ADDRESS: sftp://192.168.0.1/srv/nfsboot/tftp/ @@ -26,5 +26,5 @@ systems: HOSTNAME: baserock-c31n1 DTB_PATH: boot/m400-1003.dtb KERNEL_ARGS: console=ttyS0,9600n8r rw - INSTALL_FILES: moonshot/manifest + INSTALL_FILES: install-files/moonshot/manifest MOONSHOT_KERNEL: yes diff --git a/clusters/moonshot-pxe-armv8l64.morph b/clusters/moonshot-pxe-armv8l64.morph index 3286c72e..62ee92a2 100644 --- a/clusters/moonshot-pxe-armv8l64.morph +++ b/clusters/moonshot-pxe-armv8l64.morph @@ -9,7 +9,7 @@ systems: - morph: systems/devel-system-armv8l64.morph deploy: netboot: - type: pxeboot + type: extensions/pxeboot location: 14:58:d0:57:7f:42 PXEBOOT_MODE: existing-server PXEBOOT_CONFIG_TFTP_ADDRESS: sftp://192.168.0.1/srv/nfsboot/tftp/ @@ -18,5 +18,5 @@ systems: DTB_PATH: boot/m400-1003.dtb HOSTNAME: baserock-m400-node31 MOONSHOT_KERNEL: yes - INSTALL_FILES: moonshot/manifest + INSTALL_FILES: install-files/moonshot/manifest PXE_INSTALLER: no diff --git a/clusters/openstack-one-node-swift.morph b/clusters/openstack-one-node-swift.morph index 588b6e81..de7066d6 100644 --- a/clusters/openstack-one-node-swift.morph +++ b/clusters/openstack-one-node-swift.morph @@ -40,10 +40,10 @@ systems: - morph: systems/openstack-system-x86_64.morph deploy: release: - type: rawdisk + type: extensions/rawdisk location: baserock-openstack-system-x86_64.img DISK_SIZE: 10G - INSTALL_FILES: openstack/manifest swift/manifest + INSTALL_FILES: install-files/openstack/manifest install-files/swift/manifest HOSTNAME: onenode diff --git a/clusters/openstack-one-node.morph b/clusters/openstack-one-node.morph index 037cd23c..ab12f9b3 100644 --- a/clusters/openstack-one-node.morph +++ b/clusters/openstack-one-node.morph @@ -40,10 +40,10 @@ systems: - morph: systems/openstack-system-x86_64.morph deploy: release: - type: rawdisk + type: extensions/rawdisk location: baserock-openstack-system-x86_64.img DISK_SIZE: 10G - INSTALL_FILES: openstack/manifest + INSTALL_FILES: install-files/openstack/manifest HOSTNAME: onenode diff --git a/clusters/openstack-three-node-installer.morph b/clusters/openstack-three-node-installer.morph index 6285217a..a316a56c 100644 --- a/clusters/openstack-three-node-installer.morph +++ b/clusters/openstack-three-node-installer.morph @@ -59,7 +59,7 @@ systems: - morph: systems/installer-system-x86_64.morph deploy: network-installer: &installer - type: rawdisk + type: extensions/rawdisk location: installer-openstack-network-x86_64.img KERNEL_ARGS: init=/usr/lib/baserock-installer/installer DISK_SIZE: 6G @@ -72,14 +72,14 @@ systems: - morph: systems/initramfs-x86_64.morph deploy: network-initramfs: &initramfs - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz - morph: systems/openstack-system-x86_64.morph deploy: network-to-install: &stack-node - type: sysroot + type: extensions/sysroot location: rootfs - INSTALL_FILES: openstack/manifest + INSTALL_FILES: install-files/openstack/manifest INITRAMFS_PATH: boot/initramfs.gz HOSTNAME: threenode-network diff --git a/clusters/openstack-two-node-installer.morph b/clusters/openstack-two-node-installer.morph index f05b0e9b..d4f94cfb 100644 --- a/clusters/openstack-two-node-installer.morph +++ b/clusters/openstack-two-node-installer.morph @@ -58,7 +58,7 @@ systems: - morph: systems/installer-system-x86_64.morph deploy: controller-installer: &installer - type: rawdisk + type: extensions/rawdisk location: installer-openstack-controller-x86_64.img KERNEL_ARGS: init=/usr/lib/baserock-installer/installer DISK_SIZE: 6G @@ -71,14 +71,14 @@ systems: - morph: systems/initramfs-x86_64.morph deploy: controller-initramfs: &initramfs - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz - morph: systems/openstack-system-x86_64.morph deploy: controller-to-install: &stack-node - type: sysroot + type: extensions/sysroot location: rootfs - INSTALL_FILES: openstack/manifest + INSTALL_FILES: install-files/openstack/manifest INITRAMFS_PATH: boot/initramfs.gz HOSTNAME: twonode-controller diff --git a/clusters/release.morph b/clusters/release.morph index c5bfffca..1574bde6 100644 --- a/clusters/release.morph +++ b/clusters/release.morph @@ -10,23 +10,23 @@ systems: - morph: systems/build-system-x86_32-chroot.morph deploy: build-system-x86_32-chroot: - type: tar + type: extensions/tar location: build-system-x86_32-chroot.tar - morph: systems/build-system-x86_32.morph deploy: build-system-x86_32: - type: rawdisk + type: extensions/rawdisk location: build-system-x86_32.img DISK_SIZE: 6G - morph: systems/build-system-x86_64-chroot.morph deploy: build-system-x86_64-chroot: - type: tar + type: extensions/tar location: build-system-x86_64-chroot.tar - morph: systems/build-system-x86_64.morph deploy: build-system-x86_64: - type: rawdisk + type: extensions/rawdisk location: build-system-x86_64.img DISK_SIZE: 6G INITRAMFS_PATH: boot/initramfs.gz @@ -34,12 +34,12 @@ systems: - morph: systems/initramfs-x86_64.morph deploy: initramfs-build-system-x86_64: - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz - morph: systems/build-system-armv7lhf-jetson.morph deploy: build-system-armv7lhf-jetson: - type: rawdisk + type: extensions/rawdisk location: build-system-armv7lhf-jetson.img DISK_SIZE: 2G BOOT_DEVICE: "/dev/mmcblk0p1" @@ -51,7 +51,7 @@ systems: - morph: systems/genivi-baseline-system-x86_64-generic.morph deploy: genivi-baseline-system-x86_64-generic: - type: rawdisk + type: extensions/rawdisk location: genivi-baseline-system-x86_64-generic.img DISK_SIZE: 4G KERNEL_ARGS: vga=788 @@ -60,12 +60,12 @@ systems: - morph: systems/initramfs-x86_64.morph deploy: initramfs-genivi-baseline-system-x86_64-generic: - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz - morph: systems/genivi-baseline-system-armv7lhf-jetson.morph deploy: genivi-baseline-system-armv7lhf-jetson: - type: rawdisk + type: extensions/rawdisk location: genivi-baseline-system-armv7lhf-jetson.img DISK_SIZE: 4G BOOT_DEVICE: "/dev/mmcblk0p1" diff --git a/clusters/sdk-example-cluster.morph b/clusters/sdk-example-cluster.morph index 92e4a413..a4413c3b 100644 --- a/clusters/sdk-example-cluster.morph +++ b/clusters/sdk-example-cluster.morph @@ -34,7 +34,7 @@ systems: - morph: systems/armv7lhf-cross-toolchain-system-x86_64.morph deploy: sdk: - type: sdk + type: extensions/sdk location: armv7lhf-cross-toolchain-system-x86_64.sh PREFIX: /usr TARGET: armv7lhf-baserock-linux-gnueabi @@ -42,5 +42,5 @@ systems: - morph: systems/devel-system-armv7lhf-highbank.morph deploy: sysroot: - type: sysroot + type: extensions/sysroot location: usr/armv7lhf-baserock-linux-gnueabi/sys-root diff --git a/clusters/trove-example.morph b/clusters/trove-example.morph index 2812f60e..81b1c901 100644 --- a/clusters/trove-example.morph +++ b/clusters/trove-example.morph @@ -50,9 +50,9 @@ systems: UPSTREAM_TROVE: '' deploy: initial: - type: kvm + type: extensions/kvm location: kvm+ssh://vm-user@vm-host/test-trove/vm-path/test-trove.img VERSION_LABEL: 1 upgrade: - type: ssh-rsync + type: extensions/ssh-rsync location: test-trove diff --git a/clusters/trove.baserock.org-upgrade.morph b/clusters/trove.baserock.org-upgrade.morph index eaf939e1..e66fd6bc 100644 --- a/clusters/trove.baserock.org-upgrade.morph +++ b/clusters/trove.baserock.org-upgrade.morph @@ -13,7 +13,7 @@ systems: - morph: systems/trove-system-x86_64.morph deploy: gbo: - type: ssh-rsync + type: extensions/ssh-rsync location: root@git.baserock.org FSTAB_HOME: LABEL=homes /home auto defaults,noatime,rw 0 2 HOSTNAME: firehose1 diff --git a/clusters/upgrade-devel.morph b/clusters/upgrade-devel.morph index b7ce9bc0..3efbb36a 100644 --- a/clusters/upgrade-devel.morph +++ b/clusters/upgrade-devel.morph @@ -35,5 +35,5 @@ systems: - morph: systems/devel-system-x86_64-generic.morph deploy: self: - type: ssh-rsync + type: extensions/ssh-rsync location: root@127.0.0.1 diff --git a/clusters/weston-system-x86_64-generic-deploy.morph b/clusters/weston-system-x86_64-generic-deploy.morph index 3a6f29ef..65e35bd7 100644 --- a/clusters/weston-system-x86_64-generic-deploy.morph +++ b/clusters/weston-system-x86_64-generic-deploy.morph @@ -10,7 +10,7 @@ systems: - morph: systems/weston-system-x86_64-generic.morph deploy: weston-system-x86_64-generic: - type: rawdisk + type: extensions/rawdisk location: /weston-system-x86_64-generic.img DISK_SIZE: 4G KERNEL_ARGS: vga=788 @@ -19,5 +19,5 @@ systems: - morph: systems/initramfs-x86_64.morph deploy: initramfs: - type: initramfs + type: extensions/initramfs location: boot/initramfs.gz diff --git a/clusters/zookeeper.morph b/clusters/zookeeper.morph index 1153d4b0..cca6db81 100644 --- a/clusters/zookeeper.morph +++ b/clusters/zookeeper.morph @@ -4,7 +4,7 @@ systems: - morph: systems/zookeeper-client-x86_64.morph deploy: my-client-system: - type: kvm + type: extensions/kvm location: kvm+ssh://username@HOSTNAME/machinename/path/to/zookeeper-client.img DISK_SIZE: 4G RAM_SIZE: 1G @@ -13,7 +13,7 @@ systems: - morph: systems/zookeeper-server-x86_64.morph deploy: my-server-system: - type: kvm + type: extensions/kvm location: kvm+ssh://username@HOSTNAME/machinename/path/to/zookeeper-server.img DISK_SIZE: 4G RAM_SIZE: 1G diff --git a/extensions/add-config-files.configure b/extensions/add-config-files.configure new file mode 100755 index 00000000..2cf96fd1 --- /dev/null +++ b/extensions/add-config-files.configure @@ -0,0 +1,26 @@ +#!/bin/sh +# Copyright (C) 2013,2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +# Copy all files located in $SRC_CONFIG_DIR to the image /etc. + + +set -e + +if [ "x${SRC_CONFIG_DIR}" != x ] +then + cp -r "$SRC_CONFIG_DIR"/* "$1/etc/" +fi + diff --git a/busybox-init.configure b/extensions/busybox-init.configure index c7dba3b9..c7dba3b9 100644 --- a/busybox-init.configure +++ b/extensions/busybox-init.configure diff --git a/ceph.configure b/extensions/ceph.configure index c3cd92d1..c3cd92d1 100644 --- a/ceph.configure +++ b/extensions/ceph.configure diff --git a/cloud-init.configure b/extensions/cloud-init.configure index aa83e0e2..aa83e0e2 100755 --- a/cloud-init.configure +++ b/extensions/cloud-init.configure diff --git a/extensions/distbuild-trove-nfsboot.check b/extensions/distbuild-trove-nfsboot.check new file mode 100755 index 00000000..38c491e5 --- /dev/null +++ b/extensions/distbuild-trove-nfsboot.check @@ -0,0 +1,150 @@ +#!/usr/bin/python +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +'''Preparatory checks for Morph 'distbuild-trove-nfsboot' write extension''' + +import cliapp +import logging +import os + +import morphlib.writeexts + + +class DistbuildTroveNFSBootCheckExtension(morphlib.writeexts.WriteExtension): + + nfsboot_root = '/srv/nfsboot' + remote_user = 'root' + + required_vars = [ + 'DISTBUILD_CONTROLLER', + 'DISTBUILD_GIT_SERVER', + 'DISTBUILD_SHARED_ARTIFACT_CACHE', + 'DISTBUILD_TROVE_ID', + 'DISTBUILD_WORKERS', + 'DISTBUILD_WORKER_SSH_KEY', + ] + + def system_path(self, system_name, version_label=None): + if version_label: + return os.path.join(self.nfsboot_root, system_name, 'systems', + version_label, 'run') + else: + return os.path.join(self.nfsboot_root, system_name) + + def process_args(self, args): + if len(args) != 1: + raise cliapp.AppException('Wrong number of command line args') + + nfs_host = args[0] + nfs_netloc = '%s@%s' % (self.remote_user, nfs_host) + + version_label = os.getenv('VERSION_LABEL', 'factory') + + missing_vars = [var for var in self.required_vars + if not var in os.environ] + if missing_vars: + raise cliapp.AppException( + 'Please set: %s' % ', '.join(missing_vars)) + + controllers = os.getenv('DISTBUILD_CONTROLLER').split() + workers = os.getenv('DISTBUILD_WORKERS').split() + + if len(controllers) != 1: + raise cliapp.AppException('Please specify exactly one controller.') + + if len(workers) == 0: + raise cliapp.AppException('Please specify at least one worker.') + + upgrade = self.get_environment_boolean('UPGRADE') + + self.check_good_server(nfs_netloc) + + system_names = set(controllers + workers) + for system_name in system_names: + if upgrade: + self.check_upgradeable(nfs_netloc, system_name, version_label) + else: + system_path = self.system_path(system_name) + + if self.remote_directory_exists(nfs_netloc, system_path): + if self.get_environment_boolean('OVERWRITE') == False: + raise cliapp.AppException( + 'System %s already exists at %s:%s. Try `morph ' + 'upgrade` instead of `morph deploy`.' % ( + system_name, nfs_netloc, system_path)) + + def check_good_server(self, netloc): + # FIXME: assumes root + self.check_ssh_connectivity(netloc.split('@')[-1]) + + # Is an NFS server + try: + cliapp.ssh_runcmd( + netloc, ['test', '-e', '/etc/exports']) + except cliapp.AppException: + raise cliapp.AppException('server %s is not an nfs server' + % netloc) + try: + cliapp.ssh_runcmd( + netloc, ['systemctl', 'is-enabled', 'nfs-server.service']) + + except cliapp.AppException: + raise cliapp.AppException('server %s does not control its ' + 'nfs server by systemd' % netloc) + + # TFTP server exports /srv/nfsboot/tftp + tftp_root = os.path.join(self.nfsboot_root, 'tftp') + try: + cliapp.ssh_runcmd( + netloc, ['test' , '-d', tftp_root]) + except cliapp.AppException: + raise cliapp.AppException('server %s does not export %s' % + (netloc, tftp_root)) + + def check_upgradeable(self, nfs_netloc, system_name, version_label): + '''Check that there is already a version of the system present. + + Distbuild nodes are stateless, so an upgrade is actually pretty much + the same as an initial deployment. This test is just a sanity check. + + ''' + system_path = self.system_path(system_name) + system_version_path = self.system_path(system_name, version_label) + + if not self.remote_directory_exists(nfs_netloc, system_path): + raise cliapp.AppException( + 'System %s not found at %s:%s, cannot deploy an upgrade.' % ( + system_name, nfs_netloc, system_path)) + + if self.remote_directory_exists(nfs_netloc, system_version_path): + if self.get_environment_boolean('OVERWRITE'): + pass + else: + raise cliapp.AppException( + 'System %s version %s already exists at %s:%s.' % ( + system_name, version_label, nfs_netloc, + system_version_path)) + + def remote_directory_exists(self, nfs_netloc, path): + try: + cliapp.ssh_runcmd(nfs_netloc, ['test', '-d', path]) + except cliapp.AppException as e: + logging.debug('SSH exception: %s', e) + return False + + return True + + +DistbuildTroveNFSBootCheckExtension().run() diff --git a/extensions/distbuild-trove-nfsboot.write b/extensions/distbuild-trove-nfsboot.write new file mode 100755 index 00000000..a5a5b094 --- /dev/null +++ b/extensions/distbuild-trove-nfsboot.write @@ -0,0 +1,283 @@ +#!/usr/bin/python +# Copyright (C) 2013-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +'''Morph .write extension for a distbuild network booting off a Trove with NFS. + +''' + + +import os +import sys +import tempfile + +import cliapp +import morphlib.writeexts + + +class DistbuildTroveNFSBootWriteExtension(morphlib.writeexts.WriteExtension): + + '''Create an NFS root and kernel on TFTP during Morph's deployment. + + See distbuild-trove-nfsboot.help for documentation. + + ''' + + nfsboot_root = '/srv/nfsboot' + remote_user = 'root' + + def system_path(self, system_name, version_label=None): + if version_label: + # The 'run' directory is kind of a historical artifact. Baserock + # systems that have Btrfs root disks maintain an orig/ and a run/ + # subvolume, so that one can find changes that have been made at + # runtime. For distbuild systems, this isn't necessary because the + # root filesystems of the nodes are effectively stateless. However, + # existing systems have bootloaders configured to look for the + # 'run' directory, so we need to keep creating it. + return os.path.join(self.nfsboot_root, system_name, 'systems', + version_label, 'run') + else: + return os.path.join(self.nfsboot_root, system_name) + + def process_args(self, args): + if len(args) != 2: + raise cliapp.AppException('Wrong number of command line args') + + local_system_path, nfs_host = args + + nfs_netloc = '%s@%s' % (self.remote_user, nfs_host) + + version_label = os.getenv('VERSION_LABEL', 'factory') + + controller_name = os.getenv('DISTBUILD_CONTROLLER') + worker_names = os.getenv('DISTBUILD_WORKERS').split() + system_names = set([controller_name] + worker_names) + + git_server = os.getenv('DISTBUILD_GIT_SERVER') + shared_artifact_cache = os.getenv('DISTBUILD_SHARED_ARTIFACT_CACHE') + trove_id = os.getenv('DISTBUILD_TROVE_ID') + worker_ssh_key_path = os.getenv('DISTBUILD_WORKER_SSH_KEY') + + host_map = self.parse_host_map_string(os.getenv('HOST_MAP', '')) + + kernel_relpath = self.find_kernel(local_system_path) + + copied_rootfs = None + for system_name in system_names: + remote_system_path = self.system_path(system_name, version_label) + if copied_rootfs is None: + self.transfer_system( + nfs_netloc, local_system_path, remote_system_path) + copied_rootfs = remote_system_path + else: + self.duplicate_remote_system( + nfs_netloc, copied_rootfs, remote_system_path) + + for system_name in system_names: + remote_system_path = self.system_path(system_name, version_label) + self.link_kernel_to_tftpboot_path( + nfs_netloc, system_name, version_label, kernel_relpath) + self.set_hostname( + nfs_netloc, system_name, remote_system_path) + self.write_distbuild_config( + nfs_netloc, system_name, remote_system_path, git_server, + shared_artifact_cache, trove_id, worker_ssh_key_path, + controller_name, worker_names, host_map=host_map) + + self.configure_nfs_exports(nfs_netloc, system_names) + + for system_name in system_names: + self.update_default_version(nfs_netloc, system_name, version_label) + + def parse_host_map_string(self, host_map_string): + '''Parse the HOST_MAP variable + + Returns a dict mapping hostname to value (where value is an IP + address, a fully-qualified domain name, an alternate hostname, or + whatever). + + ''' + pairs = host_map_string.split(' ') + return morphlib.util.parse_environment_pairs({}, pairs) + + def transfer_system(self, nfs_netloc, local_system_path, + remote_system_path): + self.status(msg='Copying rootfs to %(nfs_netloc)s', + nfs_netloc=nfs_netloc) + cliapp.ssh_runcmd( + nfs_netloc, ['mkdir', '-p', remote_system_path]) + # The deployed rootfs may have been created by OSTree, so definitely + # don't pass --hard-links to `rsync`. + cliapp.runcmd( + ['rsync', '--archive', '--delete', '--info=progress2', + '--protect-args', '--partial', '--sparse', '--xattrs', + local_system_path + '/', + '%s:%s' % (nfs_netloc, remote_system_path)], stdout=sys.stdout) + + def duplicate_remote_system(self, nfs_netloc, source_system_path, + target_system_path): + self.status(msg='Duplicating rootfs to %(target_system_path)s', + target_system_path=target_system_path) + cliapp.ssh_runcmd(nfs_netloc, + ['mkdir', '-p', target_system_path]) + # We can't pass --info=progress2 here, because it may not be available + # in the remote 'rsync'. The --info setting was added in RSync 3.1.0, + # old versions of Baserock have RSync 3.0.9. So the user doesn't get + # any progress info on stdout for the 'duplicate' stage. + cliapp.ssh_runcmd(nfs_netloc, + ['rsync', '--archive', '--delete', '--protect-args', '--partial', + '--sparse', '--xattrs', source_system_path + '/', + target_system_path], stdout=sys.stdout) + + def find_kernel(self, local_system_path): + bootdir = os.path.join(local_system_path, 'boot') + image_names = ['vmlinuz', 'zImage', 'uImage'] + + for name in image_names: + try_path = os.path.join(bootdir, name) + if os.path.exists(try_path): + kernel_path = os.path.relpath(try_path, local_system_path) + break + else: + raise cliapp.AppException( + 'Could not find a kernel in the system: none of ' + '%s found' % ', '.join(image_names)) + return kernel_path + + def link_kernel_to_tftpboot_path(self, nfs_netloc, system_name, + version_label, kernel_relpath): + '''Create links for TFTP server for a system's kernel.''' + + remote_system_path = self.system_path(system_name, version_label) + kernel_dest = os.path.join(remote_system_path, kernel_relpath) + + self.status(msg='Creating links to %(name)s kernel in tftp directory', + name=system_name) + tftp_dir = os.path.join(self.nfsboot_root , 'tftp') + + versioned_kernel_name = "%s-%s" % (system_name, version_label) + kernel_name = system_name + + cliapp.ssh_runcmd(nfs_netloc, + ['ln', '-f', kernel_dest, + os.path.join(tftp_dir, versioned_kernel_name)]) + + cliapp.ssh_runcmd(nfs_netloc, + ['ln', '-sf', versioned_kernel_name, + os.path.join(tftp_dir, kernel_name)]) + + def set_remote_file_contents(self, nfs_netloc, path, text): + with tempfile.NamedTemporaryFile() as f: + f.write(text) + f.flush() + cliapp.runcmd( + ['scp', f.name, '%s:%s' % (nfs_netloc, path)]) + + def set_hostname(self, nfs_netloc, system_name, system_path): + hostname_path = os.path.join(system_path, 'etc', 'hostname') + self.set_remote_file_contents( + nfs_netloc, hostname_path, system_name + '\n') + + def write_distbuild_config(self, nfs_netloc, system_name, system_path, + git_server, shared_artifact_cache, trove_id, + worker_ssh_key_path, controller_name, + worker_names, host_map = {}): + '''Write /etc/distbuild/distbuild.conf on the node. + + This .write extension takes advantage of the 'generic' mode of + distbuild.configure. Each node is not configured until first-boot, + when distbuild-setup.service runs and configures the node based on the + contents of /etc/distbuild/distbuild.conf. + + ''' + def host(hostname): + return host_map.get(hostname, hostname) + + config = { + 'ARTIFACT_CACHE_SERVER': host(shared_artifact_cache), + 'CONTROLLERHOST': host(controller_name), + 'TROVE_HOST': host(git_server), + 'TROVE_ID': trove_id, + 'DISTBUILD_CONTROLLER': system_name == controller_name, + 'DISTBUILD_WORKER': system_name in worker_names, + 'WORKERS': ', '.join(map(host, worker_names)), + 'WORKER_SSH_KEY': '/etc/distbuild/worker.key', + } + + config_text = '\n'.join( + '%s: %s' % (key, value) for key, value in config.iteritems()) + config_text = \ + '# Generated by distbuild-trove-nfsboot.write\n' + \ + config_text + '\n' + path = os.path.join(system_path, 'etc', 'distbuild') + cliapp.ssh_runcmd( + nfs_netloc, ['mkdir', '-p', path]) + cliapp.runcmd( + ['scp', worker_ssh_key_path, '%s:%s' % (nfs_netloc, path)]) + self.set_remote_file_contents( + nfs_netloc, os.path.join(path, 'distbuild.conf'), config_text) + + def configure_nfs_exports(self, nfs_netloc, system_names): + '''Ensure the Trove is set up to export the NFS roots we need. + + This doesn't handle setting up the TFTP daemon. We assume that is + already running. + + ''' + for system_name in system_names: + exported_path = self.system_path(system_name) + exports_path = '/etc/exports' + + # Rather ugly SSH hackery follows to ensure each system path is + # listed in /etc/exports. + try: + cliapp.ssh_runcmd( + nfs_netloc, ['grep', '-q', exported_path, exports_path]) + except cliapp.AppException: + ip_mask = '*' + options = 'rw,no_subtree_check,no_root_squash,async' + exports_string = '%s %s(%s)\n' % (exported_path, ip_mask, + options) + exports_append_sh = '''\ + set -eu + target="$1" + temp=$(mktemp) + cat "$target" > "$temp" + cat >> "$temp" + mv "$temp" "$target" + ''' + cliapp.ssh_runcmd( + nfs_netloc, + ['sh', '-c', exports_append_sh, '--', exports_path], + feed_stdin=exports_string) + + cliapp.ssh_runcmd(nfs_netloc, + ['systemctl', 'restart', 'nfs-server.service']) + + def update_default_version(self, remote_netloc, system_name, + version_label): + self.status(msg='Linking \'default\' to %(version)s for %(system)s', + version=version_label, system=system_name) + system_path = self.system_path(system_name) + system_version_path = os.path.join(system_path, 'systems', + version_label) + default_path = os.path.join(system_path, 'systems', 'default') + + cliapp.ssh_runcmd(remote_netloc, + ['ln', '-sfn', system_version_path, default_path]) + + +DistbuildTroveNFSBootWriteExtension().run() diff --git a/extensions/distbuild-trove-nfsboot.write.help b/extensions/distbuild-trove-nfsboot.write.help new file mode 100644 index 00000000..62f1455c --- /dev/null +++ b/extensions/distbuild-trove-nfsboot.write.help @@ -0,0 +1,49 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + Deploy a distbuild network, using a Trove to serve the kernel and rootfs. + + The `location` argument is the hostname of the Trove system. + + The following configuration values must be specified: + + - DISTBUILD_CONTROLLER: hostname of controller system + - DISTBUILD_WORKERS: hostnames of each worker system + - DISTBUILD_GIT_SERVER: Trove hostname + - DISTBUILD_SHARED_ARTIFACT_CACHE: Trove hostname + - DISTBUILD_TROVE_ID: Trove ID + - DISTBUILD_WORKER_SSH_KEY: SSH key to be used for ssh:// repos + + A note on TROVE_ID: the current distbuild-setup service requires that + a single 'Trove ID' is specified. This is used in Morph for expanding + keyed URLs. If you set TROVE_ID=foo for example, foo:bar will be expanded + to git://$GIT_SERVER/foo, in addition to the standard baserock: and + upstream: prefixes that you can use. + + The WORKER_SSH_KEY must be provided, even if you don't need it. The + distbuild-setup service could be changed to make it optional. + + The following configuration values are optional: + + - HOST_MAP: a list of key=value pairs mapping hostnames to IP addresses, + or fully-qualified domain names. Useful if you + cannot rely on hostname resolution working for your deploment. + + The extension will connect to root@location via ssh to copy the kernel and + rootfs, and configure the nfs server. It will duplicate the kernel and + rootfs once for each node in the distbuild network. + + The deployment mechanism makes assumptions about the bootloader + configuration of the target machines. diff --git a/distbuild.configure b/extensions/distbuild.configure index 062aaecc..062aaecc 100644 --- a/distbuild.configure +++ b/extensions/distbuild.configure diff --git a/extensions/fstab.configure b/extensions/fstab.configure new file mode 100755 index 00000000..b9154eee --- /dev/null +++ b/extensions/fstab.configure @@ -0,0 +1,28 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright © 2013-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. +# +# =*= License: GPL-2 =*= + + +import os +import sys + +import morphlib + +envvars = {k: v for (k, v) in os.environ.iteritems() if k.startswith('FSTAB_')} + +conf_file = os.path.join(sys.argv[1], 'etc/fstab') +morphlib.util.write_from_dict(conf_file, envvars) diff --git a/distbuild/usr/lib/distbuild-setup/ansible/hosts b/extensions/hosts index 5b97818d..5b97818d 100644 --- a/distbuild/usr/lib/distbuild-setup/ansible/hosts +++ b/extensions/hosts diff --git a/extensions/hosts.configure b/extensions/hosts.configure new file mode 100755 index 00000000..6b068d04 --- /dev/null +++ b/extensions/hosts.configure @@ -0,0 +1,48 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# Copyright © 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# =*= License: GPL-2 =*= + + +import os +import sys +import socket + +import morphlib + +def validate(var, line): + xs = line.split() + if len(xs) == 0: + raise morphlib.Error("`%s: %s': line is empty" % (var, line)) + + ip = xs[0] + hostnames = xs[1:] + + if len(hostnames) == 0: + raise morphlib.Error("`%s: %s': missing hostname" % (var, line)) + + family = socket.AF_INET6 if ':' in ip else socket.AF_INET + + try: + socket.inet_pton(family, ip) + except socket.error: + raise morphlib.Error("`%s: %s' invalid ip" % (var, ip)) + +envvars = {k: v for (k, v) in os.environ.iteritems() if k.startswith('HOSTS_')} + +conf_file = os.path.join(sys.argv[1], 'etc/hosts') +morphlib.util.write_from_dict(conf_file, envvars, validate) diff --git a/image-package-example/README b/extensions/image-package-example/README index c1322f25..c1322f25 100644 --- a/image-package-example/README +++ b/extensions/image-package-example/README diff --git a/image-package-example/common.sh.in b/extensions/image-package-example/common.sh.in index 9a7389a7..9a7389a7 100644 --- a/image-package-example/common.sh.in +++ b/extensions/image-package-example/common.sh.in diff --git a/image-package-example/disk-install.sh.in b/extensions/image-package-example/disk-install.sh.in index bc8e0e67..bc8e0e67 100644 --- a/image-package-example/disk-install.sh.in +++ b/extensions/image-package-example/disk-install.sh.in diff --git a/image-package-example/make-disk-image.sh.in b/extensions/image-package-example/make-disk-image.sh.in index 61264fa0..61264fa0 100644 --- a/image-package-example/make-disk-image.sh.in +++ b/extensions/image-package-example/make-disk-image.sh.in diff --git a/image-package.write b/extensions/image-package.write index 15ceadcf..15ceadcf 100755 --- a/image-package.write +++ b/extensions/image-package.write diff --git a/extensions/initramfs.write b/extensions/initramfs.write new file mode 100755 index 00000000..1059defa --- /dev/null +++ b/extensions/initramfs.write @@ -0,0 +1,26 @@ +#!/bin/sh +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. +# +# =*= License: GPL-2 =*= + +set -e + +ROOTDIR="$1" +INITRAMFS_PATH="$2" + +(cd "$ROOTDIR" && + find . -print0 | + cpio -0 -H newc -o) | + gzip -c | install -D -m644 /dev/stdin "$INITRAMFS_PATH" diff --git a/extensions/initramfs.write.help b/extensions/initramfs.write.help new file mode 100644 index 00000000..54d3ae8c --- /dev/null +++ b/extensions/initramfs.write.help @@ -0,0 +1,55 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + + Create an initramfs for a system by taking an existing system and + converting it to the appropriate format. + + The system must have a `/init` executable as the userland entry-point. + This can have a different path, if `rdinit=$path` is added to + the kernel command line. This can be added to the `rawdisk`, + `virtualbox-ssh` and `kvm` write extensions with the `KERNEL_CMDLINE` + option. + + It is possible to use a ramfs as the final rootfs without a `/init` + executable, by setting `root=/dev/mem`, or `rdinit=/sbin/init`, + but this is beyond the scope for the `initramfs.write` extension. + + The intended use of initramfs.write is to be part of a nested + deployment, so the parent system has an initramfs stored as + `/boot/initramfs.gz`. See the following example: + + name: initramfs-test + kind: cluster + systems: + - morph: minimal-system-x86_64-generic + deploy: + system: + type: rawdisk + location: initramfs-system-x86_64.img + DISK_SIZE: 1G + HOSTNAME: initramfs-system + INITRAMFS_PATH: boot/initramfs.gz + subsystems: + - morph: initramfs-x86_64 + deploy: + initramfs: + type: initramfs + location: boot/initramfs.gz + + Parameters: + + * location: the path where the initramfs will be installed (e.g. + `boot/initramfs.gz`) in the above example diff --git a/extensions/install-essential-files.configure b/extensions/install-essential-files.configure new file mode 100755 index 00000000..cce9a5a5 --- /dev/null +++ b/extensions/install-essential-files.configure @@ -0,0 +1,42 @@ +#!/usr/bin/env python2 +# Copyright (C) 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +''' A Morph configuration extension for adding essential files to a system + +It will read the manifest files located in essential-files/manifest, +then use the contens of those files to determine which files +to install into the target system. + +''' + +import subprocess +import os + +import cliapp + +class InstallEssentialFilesConfigureExtension(cliapp.Application): + + def process_args(self, args): + target_root = args[0] + os.environ["INSTALL_FILES"] = "install-files/essential-files/manifest" + self.install_essential_files(target_root) + + def install_essential_files(self, target_root): + command = os.path.join(os.path.dirname(__file__), + "install-files.configure") + subprocess.check_call([command, target_root]) + +InstallEssentialFilesConfigureExtension().run() diff --git a/extensions/install-essential-files.configure.help b/extensions/install-essential-files.configure.help new file mode 100644 index 00000000..9148aeff --- /dev/null +++ b/extensions/install-essential-files.configure.help @@ -0,0 +1,20 @@ +# Copyright (C) 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + This installs files from the essential-files/ folder in your + definitions.git repo, according to essential-files/manifest. + + It wraps the install-files.configure extension. Take a look to that + extension help to know more about the format of the manifest file. diff --git a/extensions/install-files.configure b/extensions/install-files.configure new file mode 100755 index 00000000..341cce61 --- /dev/null +++ b/extensions/install-files.configure @@ -0,0 +1,134 @@ +#!/usr/bin/python +# Copyright (C) 2013-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +''' A Morph configuration extension for adding arbitrary files to a system + +It will read the manifest files specified in the environment variable +INSTALL_FILES, then use the contens of those files to determine which files +to install into the target system. + +''' + +import cliapp +import os +import errno +import re +import sys +import shlex +import shutil +import stat + +try: + import jinja2 + jinja_available = True +except ImportError: + jinja_available = False + +class InstallFilesConfigureExtension(cliapp.Application): + + def process_args(self, args): + if not 'INSTALL_FILES' in os.environ: + return + target_root = args[0] + manifests = shlex.split(os.environ['INSTALL_FILES']) + for manifest in manifests: + self.install_manifest(manifest, target_root) + + def install_manifest(self, manifest, target_root): + manifest_dir = os.path.dirname(manifest) + with open(manifest) as f: + entries = f.readlines() + for entry in entries: + self.install_entry(entry, manifest_dir, target_root) + + def force_symlink(self, source, link_name): + try: + os.symlink(source, link_name) + except OSError as e: + if e.errno == errno.EEXIST: + os.remove(link_name) + os.symlink(source, link_name) + + def install_entry(self, entry, manifest_root, target_root): + m = re.match('(template )?(overwrite )?' + '([0-7]+) ([0-9]+) ([0-9]+) (\S+)', entry) + + if m: + template = m.group(1) + overwrite = m.group(2) + mode = int(m.group(3), 8) # mode is octal + uid = int(m.group(4)) + gid = int(m.group(5)) + path = m.group(6) + else: + raise cliapp.AppException('Invalid manifest entry, ' + 'format: [template] [overwrite] ' + '<octal mode> <uid decimal> <gid decimal> <filename>') + + dest_path = os.path.join(target_root, './' + path) + if stat.S_ISDIR(mode): + if os.path.exists(dest_path) and not overwrite: + dest_stat = os.stat(dest_path) + if (mode != dest_stat.st_mode + or uid != dest_stat.st_uid + or gid != dest_stat.st_gid): + raise cliapp.AppException('"%s" exists and is not ' + 'identical to directory ' + '"%s"' % (dest_path, entry)) + else: + os.mkdir(dest_path, mode) + os.chown(dest_path, uid, gid) + os.chmod(dest_path, mode) + + elif stat.S_ISLNK(mode): + if os.path.lexists(dest_path) and not overwrite: + raise cliapp.AppException('Symlink already exists at %s' + % dest_path) + else: + linkdest = os.readlink(os.path.join(manifest_root, + './' + path)) + self.force_symlink(linkdest, dest_path) + os.lchown(dest_path, uid, gid) + + elif stat.S_ISREG(mode): + if os.path.lexists(dest_path) and not overwrite: + raise cliapp.AppException('File already exists at %s' + % dest_path) + else: + if template: + if not jinja_available: + raise cliapp.AppException( + "Failed to install template file `%s': " + 'install-files templates require jinja2' + % path) + + loader = jinja2.FileSystemLoader(manifest_root) + env = jinja2.Environment(loader=loader, + keep_trailing_newline=True) + + env.get_template(path).stream(os.environ).dump(dest_path) + else: + shutil.copyfile(os.path.join(manifest_root, './' + path), + dest_path) + + os.chown(dest_path, uid, gid) + os.chmod(dest_path, mode) + + else: + raise cliapp.AppException('Mode given in "%s" is not a file,' + ' symlink or directory' % entry) + +InstallFilesConfigureExtension().run() diff --git a/extensions/install-files.configure.help b/extensions/install-files.configure.help new file mode 100644 index 00000000..991c26c8 --- /dev/null +++ b/extensions/install-files.configure.help @@ -0,0 +1,74 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + Install a set of files onto a system + + To use this extension you create a directory of files you want to install + onto the target system. + + In this example we want to copy some ssh keys onto a system + + % mkdir sshkeyfiles + % mkdir -p sshkeyfiles/root/.ssh + % cp id_rsa sshkeyfiles/root/.ssh + % cp id_rsa.pub sshkeyfiles/root/.ssh + + Now we need to create a manifest file to set the file modes + and persmissions. The manifest file should be created inside the + directory that contains the files we're trying to install. + + cat << EOF > sshkeyfiles/manifest + 0040755 0 0 /root/.ssh + 0100600 0 0 /root/.ssh/id_rsa + 0100644 0 0 /root/.ssh/id_rsa.pub + EOF + + Then we add the path to our manifest to our cluster morph, + this path should be relative to the system definitions repository. + + INSTALL_FILES: sshkeysfiles/manifest + + More generally entries in the manifest are formatted as: + [overwrite] <octal mode> <uid decimal> <gid decimal> <filename> + + NOTE: Directories on the target must be created if they do not exist. + + The extension supports files, symlinks and directories. + + For example, + + 0100644 0 0 /etc/issue + + creates a regular file at /etc/issue with 644 permissions, + uid 0 and gid 0, if the file doesn't already exist. + + overwrite 0100644 0 0 /etc/issue + + creates a regular file at /etc/issue with 644 permissions, + uid 0 and gid 0, if the file already exists it is overwritten. + + 0100755 0 0 /usr/bin/foo + + creates an executable file at /usr/bin/foo + + 0040755 0 0 /etc/foodir + + creates a directory with 755 permissions + + 0120000 0 0 /usr/bin/bar + + creates a symlink at /usr/bin/bar + + NOTE: You will still need to make a symlink in the manifest directory. diff --git a/installer.configure b/extensions/installer.configure index a77dc851..a77dc851 100755 --- a/installer.configure +++ b/extensions/installer.configure diff --git a/jffs2.write b/extensions/jffs2.write index 46b69a53..46b69a53 100644 --- a/jffs2.write +++ b/extensions/jffs2.write diff --git a/jffs2.write.help b/extensions/jffs2.write.help index 059a354b..059a354b 100644 --- a/jffs2.write.help +++ b/extensions/jffs2.write.help diff --git a/extensions/kvm.check b/extensions/kvm.check new file mode 100755 index 00000000..67cb3d38 --- /dev/null +++ b/extensions/kvm.check @@ -0,0 +1,169 @@ +#!/usr/bin/python +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +'''Preparatory checks for Morph 'kvm' write extension''' + +import cliapp +import os +import re +import urlparse + +import morphlib.writeexts + + +class KvmPlusSshCheckExtension(morphlib.writeexts.WriteExtension): + + location_pattern = '^/(?P<guest>[^/]+)(?P<path>/.+)$' + + def process_args(self, args): + if len(args) != 1: + raise cliapp.AppException('Wrong number of command line args') + + self.require_btrfs_in_deployment_host_kernel() + + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + raise cliapp.AppException( + 'Use the `ssh-rsync` write extension to deploy upgrades to an ' + 'existing remote system.') + + location = args[0] + ssh_host, vm_name, vm_path = self.check_and_parse_location(location) + + self.check_ssh_connectivity(ssh_host) + self.check_can_create_file_at_given_path(ssh_host, vm_path) + self.check_no_existing_libvirt_vm(ssh_host, vm_name) + self.check_extra_disks_exist(ssh_host, self.parse_attach_disks()) + self.check_virtual_networks_are_started(ssh_host) + self.check_host_has_virtinstall(ssh_host) + + def check_and_parse_location(self, location): + '''Check and parse the location argument to get relevant data.''' + + x = urlparse.urlparse(location) + + if x.scheme != 'kvm+ssh': + raise cliapp.AppException( + 'URL schema must be kvm+ssh in %s' % location) + + m = re.match(self.location_pattern, x.path) + if not m: + raise cliapp.AppException('Cannot parse location %s' % location) + + return x.netloc, m.group('guest'), m.group('path') + + def check_no_existing_libvirt_vm(self, ssh_host, vm_name): + try: + cliapp.ssh_runcmd(ssh_host, + ['virsh', '--connect', 'qemu:///system', 'domstate', vm_name]) + except cliapp.AppException as e: + pass + else: + raise cliapp.AppException( + 'Host %s already has a VM named %s. You can use the ssh-rsync ' + 'write extension to deploy upgrades to existing machines.' % + (ssh_host, vm_name)) + + def check_can_create_file_at_given_path(self, ssh_host, vm_path): + + def check_can_write_to_given_path(): + try: + cliapp.ssh_runcmd(ssh_host, ['touch', vm_path]) + except cliapp.AppException as e: + raise cliapp.AppException("Can't write to location %s on %s" + % (vm_path, ssh_host)) + else: + cliapp.ssh_runcmd(ssh_host, ['rm', vm_path]) + + try: + cliapp.ssh_runcmd(ssh_host, ['test', '-e', vm_path]) + except cliapp.AppException as e: + # vm_path doesn't already exist, so let's test we can write + check_can_write_to_given_path() + else: + raise cliapp.AppException('%s already exists on %s' + % (vm_path, ssh_host)) + + def check_extra_disks_exist(self, ssh_host, filename_list): + for filename in filename_list: + try: + cliapp.ssh_runcmd(ssh_host, ['ls', filename]) + except cliapp.AppException as e: + raise cliapp.AppException('Did not find file %s on host %s' % + (filename, ssh_host)) + + def check_virtual_networks_are_started(self, ssh_host): + + def check_virtual_network_is_started(network_name): + cmd = ['virsh', '-c', 'qemu:///system', 'net-info', network_name] + net_info = cliapp.ssh_runcmd(ssh_host, cmd).split('\n') + + def pretty_concat(lines): + return '\n'.join(['\t%s' % line for line in lines]) + + for line in net_info: + m = re.match('^Active:\W*(\w+)\W*', line) + if m: + break + else: + raise cliapp.AppException( + "Got unexpected output parsing output of `%s':\n%s" + % (' '.join(cmd), pretty_concat(net_info))) + + network_active = m.group(1) == 'yes' + + if not network_active: + raise cliapp.AppException("Network '%s' is not started" + % network_name) + + def name(nic_entry): + if ',' in nic_entry: + # network=NETWORK_NAME,mac=12:34,model=e1000... + return nic_entry[:nic_entry.find(',')].lstrip('network=') + else: + return nic_entry.lstrip('network=') # NETWORK_NAME + + if 'NIC_CONFIG' in os.environ: + nics = os.environ['NIC_CONFIG'].split() + + for n in nics: + if not (n.startswith('network=') + or n.startswith('bridge=') + or n == 'user'): + raise cliapp.AppException('malformed NIC_CONFIG: %s\n' + " (expected 'bridge=BRIDGE' 'network=NAME'" + " or 'user')" % n) + + # --network bridge= is used to specify a bridge + # --network user is used to specify a form of NAT + # (see the virt-install(1) man page) + networks = [name(n) for n in nics if not n.startswith('bridge=') + and not n.startswith('user')] + else: + networks = ['default'] + + for network in networks: + check_virtual_network_is_started(network) + + def check_host_has_virtinstall(self, ssh_host): + try: + cliapp.ssh_runcmd(ssh_host, ['which', 'virt-install']) + except cliapp.AppException: + raise cliapp.AppException( + 'virt-install does not seem to be installed on host %s' + % ssh_host) + + +KvmPlusSshCheckExtension().run() diff --git a/extensions/kvm.write b/extensions/kvm.write new file mode 100755 index 00000000..0d0c095b --- /dev/null +++ b/extensions/kvm.write @@ -0,0 +1,120 @@ +#!/usr/bin/python +# Copyright (C) 2012-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +'''A Morph deployment write extension for deploying to KVM+libvirt. + +See file kvm.write.help for documentation + +''' + + +import cliapp +import os +import re +import sys +import tempfile +import urlparse + +import morphlib.writeexts + + +class KvmPlusSshWriteExtension(morphlib.writeexts.WriteExtension): + + location_pattern = '^/(?P<guest>[^/]+)(?P<path>/.+)$' + + def process_args(self, args): + if len(args) != 2: + raise cliapp.AppException('Wrong number of command line args') + + temp_root, location = args + ssh_host, vm_name, vm_path = self.parse_location(location) + autostart = self.get_environment_boolean('AUTOSTART') + + fd, raw_disk = tempfile.mkstemp() + os.close(fd) + self.create_local_system(temp_root, raw_disk) + + try: + self.transfer(raw_disk, ssh_host, vm_path) + self.create_libvirt_guest(ssh_host, vm_name, vm_path, autostart) + except BaseException: + sys.stderr.write('Error deploying to libvirt') + os.remove(raw_disk) + cliapp.ssh_runcmd(ssh_host, ['rm', '-f', vm_path]) + raise + else: + os.remove(raw_disk) + + self.status( + msg='Virtual machine %(vm_name)s has been created', + vm_name=vm_name) + + def parse_location(self, location): + '''Parse the location argument to get relevant data.''' + + x = urlparse.urlparse(location) + m = re.match('^/(?P<guest>[^/]+)(?P<path>/.+)$', x.path) + return x.netloc, m.group('guest'), m.group('path') + + def transfer(self, raw_disk, ssh_host, vm_path): + '''Transfer raw disk image to libvirt host.''' + + self.status(msg='Transferring disk image') + + xfer_hole_path = morphlib.util.get_data_path('xfer-hole') + recv_hole = morphlib.util.get_data('recv-hole') + + ssh_remote_cmd = [ + 'sh', '-c', recv_hole, 'dummy-argv0', 'file', vm_path + ] + + cliapp.runcmd( + ['python', xfer_hole_path, raw_disk], + ['ssh', ssh_host] + map(cliapp.shell_quote, ssh_remote_cmd), + stdout=None, stderr=None) + + def create_libvirt_guest(self, ssh_host, vm_name, vm_path, autostart): + '''Create the libvirt virtual machine.''' + + self.status(msg='Creating libvirt/kvm virtual machine') + + attach_disks = self.parse_attach_disks() + attach_opts = [] + for disk in attach_disks: + attach_opts.extend(['--disk', 'path=%s' % disk]) + + if 'NIC_CONFIG' in os.environ: + nics = os.environ['NIC_CONFIG'].split() + for nic in nics: + attach_opts.extend(['--network', nic]) + + ram_mebibytes = str(self.get_ram_size() / (1024**2)) + + vcpu_count = str(self.get_vcpu_count()) + + cmdline = ['virt-install', '--connect', 'qemu:///system', + '--import', '--name', vm_name, '--vnc', + '--ram', ram_mebibytes, '--vcpus', vcpu_count, + '--disk', 'path=%s,bus=ide' % vm_path] + attach_opts + if not autostart: + cmdline += ['--noreboot'] + cliapp.ssh_runcmd(ssh_host, cmdline) + + if autostart: + cliapp.ssh_runcmd(ssh_host, + ['virsh', '--connect', 'qemu:///system', 'autostart', vm_name]) + +KvmPlusSshWriteExtension().run() diff --git a/extensions/kvm.write.help b/extensions/kvm.write.help new file mode 100644 index 00000000..812a5309 --- /dev/null +++ b/extensions/kvm.write.help @@ -0,0 +1,90 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + + Deploy a Baserock system as a *new* KVM/LibVirt virtual machine. + + Use the `ssh-rsync` write extension to deploy upgrades to an *existing* VM + + Parameters: + + * location: a custom URL scheme of the form `kvm+ssh://HOST/GUEST/PATH`, + where: + * HOST is the name of the host on which KVM/LibVirt is running + * GUEST is the name of the guest VM on that host + * PATH is the path to the disk image that should be created, + on that host. For example, + `kvm+ssh://alice@192.168.122.1/testsys/home/alice/testys.img` where + * `alice@192.168.122.1` is the target host as given to ssh, + **from within the development host** (which may be + different from the target host's normal address); + * `testsys` is the name of the new guest VM'; + * `/home/alice/testys.img` is the pathname of the disk image files + on the target host. + + * HOSTNAME=name: the hostname of the **guest** VM within the network into + which it is being deployed + + * DISK_SIZE=X: the size of the VM's primary virtual hard disk. `X` should + use a suffix of `K`, `M`, or `G` (in upper or lower case) to indicate + kilo-, mega-, or gigabytes. For example, `DISK_SIZE=100G` would create a + 100 gigabyte disk image. **This parameter is mandatory**. + + * RAM_SIZE=X: The amount of RAM that the virtual machine should allocate + for itself from the host. `X` is interpreted in the same was as for + DISK_SIZE`, and defaults to `1G` + + * VCPUS=n: the number of virtual CPUs for the VM. Allowed values 1-32. Do + not use more CPU cores than you have available physically (real cores, no + hyperthreads) + + * INITRAMFS_PATH=path: the location of an initramfs for the bootloader to + tell Linux to use, rather than booting the rootfs directly. + + * AUTOSTART=<VALUE>` - boolean. If it is set, the VM will be started when + it has been deployed. + + * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree + binary - Give the full path (without a leading /) to the location of the + DTB in the built system image . The deployment will fail if `path` does + not exist. + + * BOOTLOADER_INSTALL=value: the bootloader to be installed + **(MANDATORY)** for non-x86 systems + + allowed values = + - 'extlinux' (default) - the extlinux bootloader will + be installed + - 'none' - no bootloader will be installed by `morph deploy`. A + bootloader must be installed manually. This value must be used when + deploying non-x86 systems such as ARM. + + * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used. + If not specified for x86-32 and x86-64 systems, 'extlinux' will be used + + allowed values = + - 'extlinux' + + * KERNEL_ARGS=args: optional additional kernel command-line parameters to + be appended to the default set. The default set is: + + 'rw init=/sbin/init rootfstype=btrfs \ + rootflags=subvol=systems/default/run \ + root=[name or UUID of root filesystem]' + + (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt) + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/mason.configure b/extensions/mason.configure index 1198ebd0..40fdfe46 100644 --- a/mason.configure +++ b/extensions/mason.configure @@ -39,19 +39,19 @@ set -e ROOT="$1" mkdir -p "$ROOT"/usr/lib/mason -cp mason/mason.sh "$ROOT"/usr/lib/mason/mason.sh -cp mason/mason-report.sh "$ROOT"/usr/lib/mason/mason-report.sh -cp mason/os-init-script "$ROOT"/usr/lib/mason/os-init-script +cp extensions/mason/mason.sh "$ROOT"/usr/lib/mason/mason.sh +cp extensions/mason/mason-report.sh "$ROOT"/usr/lib/mason/mason-report.sh +cp extensions/mason/os-init-script "$ROOT"/usr/lib/mason/os-init-script -cp mason/mason.timer "$ROOT"/etc/systemd/system/mason.timer +cp extensions/mason/mason.timer "$ROOT"/etc/systemd/system/mason.timer -cp mason/mason.service "$ROOT"/etc/systemd/system/mason.service +cp extensions/mason/mason.service "$ROOT"/etc/systemd/system/mason.service ########################################################################## # Set up httpd web server ########################################################################## -cp mason/httpd.service "$ROOT"/etc/systemd/system/httpd.service +cp extensions/mason/httpd.service "$ROOT"/etc/systemd/system/httpd.service mkdir -p "$ROOT"/srv/mason @@ -68,9 +68,9 @@ mkdir -p "$ROOT"/var/mason mkdir -p "$ROOT/usr/share/mason-setup" mkdir -p "$ROOT/usr/lib/mason-setup" -cp mason/share/* "$ROOT/usr/share/mason-setup" -cp -r mason/ansible "$ROOT/usr/lib/mason-setup/" -cp mason/mason-setup.service "$ROOT"/etc/systemd/system/mason-setup.service +cp extensions/mason/share/* "$ROOT/usr/share/mason-setup" +cp -r extensions/mason/ansible "$ROOT/usr/lib/mason-setup/" +cp extensions/mason/mason-setup.service "$ROOT"/etc/systemd/system/mason-setup.service ln -s ../mason-setup.service "$ROOT"/etc/systemd/system/multi-user.target.wants/mason-setup.service diff --git a/hosts b/extensions/mason/ansible/hosts index 5b97818d..5b97818d 100644 --- a/hosts +++ b/extensions/mason/ansible/hosts diff --git a/mason/ansible/mason-setup.yml b/extensions/mason/ansible/mason-setup.yml index d1528dbb..d1528dbb 100644 --- a/mason/ansible/mason-setup.yml +++ b/extensions/mason/ansible/mason-setup.yml diff --git a/mason/httpd.service b/extensions/mason/httpd.service index 7572b732..7572b732 100644 --- a/mason/httpd.service +++ b/extensions/mason/httpd.service diff --git a/mason/mason-generator.sh b/extensions/mason/mason-generator.sh index 187db72c..187db72c 100755 --- a/mason/mason-generator.sh +++ b/extensions/mason/mason-generator.sh diff --git a/mason/mason-report.sh b/extensions/mason/mason-report.sh index 9c20b65b..9c20b65b 100755 --- a/mason/mason-report.sh +++ b/extensions/mason/mason-report.sh diff --git a/mason/mason-setup.service b/extensions/mason/mason-setup.service index 60403bde..60403bde 100644 --- a/mason/mason-setup.service +++ b/extensions/mason/mason-setup.service diff --git a/mason/mason.service b/extensions/mason/mason.service index d5c99498..d5c99498 100644 --- a/mason/mason.service +++ b/extensions/mason/mason.service diff --git a/mason/mason.sh b/extensions/mason/mason.sh index dba99dfa..dba99dfa 100755 --- a/mason/mason.sh +++ b/extensions/mason/mason.sh diff --git a/mason/mason.timer b/extensions/mason/mason.timer index 107dff97..107dff97 100644 --- a/mason/mason.timer +++ b/extensions/mason/mason.timer diff --git a/mason/os-init-script b/extensions/mason/os-init-script index 77afb926..77afb926 100644 --- a/mason/os-init-script +++ b/extensions/mason/os-init-script diff --git a/mason/share/mason.conf b/extensions/mason/share/mason.conf index 1295ce84..1295ce84 100644 --- a/mason/share/mason.conf +++ b/extensions/mason/share/mason.conf diff --git a/mason/share/os.conf b/extensions/mason/share/os.conf index 21ef398c..21ef398c 100644 --- a/mason/share/os.conf +++ b/extensions/mason/share/os.conf diff --git a/moonshot-kernel.configure b/extensions/moonshot-kernel.configure index 11d01751..11d01751 100644 --- a/moonshot-kernel.configure +++ b/extensions/moonshot-kernel.configure diff --git a/nfsboot-server.configure b/extensions/nfsboot-server.configure index 9fb48096..9fb48096 100755 --- a/nfsboot-server.configure +++ b/extensions/nfsboot-server.configure diff --git a/extensions/nfsboot.check b/extensions/nfsboot.check new file mode 100755 index 00000000..e273f61c --- /dev/null +++ b/extensions/nfsboot.check @@ -0,0 +1,95 @@ +#!/usr/bin/python +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +'''Preparatory checks for Morph 'nfsboot' write extension''' + +import cliapp +import os + +import morphlib.writeexts + + +class NFSBootCheckExtension(morphlib.writeexts.WriteExtension): + + _nfsboot_root = '/srv/nfsboot' + + def process_args(self, args): + if len(args) != 1: + raise cliapp.AppException('Wrong number of command line args') + + location = args[0] + + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + raise cliapp.AppException( + 'Upgrading is not currently supported for NFS deployments.') + + hostname = os.environ.get('HOSTNAME', None) + if hostname is None: + raise cliapp.AppException('You must specify a HOSTNAME.') + if hostname == 'baserock': + raise cliapp.AppException('It is forbidden to nfsboot a system ' + 'with hostname "%s"' % hostname) + + self.test_good_server(location) + + version_label = os.getenv('VERSION_LABEL', 'factory') + versioned_root = os.path.join(self._nfsboot_root, hostname, 'systems', + version_label) + if self.version_exists(versioned_root, location): + raise cliapp.AppException( + 'Root file system for host %s (version %s) already exists on ' + 'the NFS server %s. Deployment aborted.' % (hostname, + version_label, location)) + + def test_good_server(self, server): + self.check_ssh_connectivity(server) + + # Is an NFS server + try: + cliapp.ssh_runcmd( + 'root@%s' % server, ['test', '-e', '/etc/exports']) + except cliapp.AppException: + raise cliapp.AppException('server %s is not an nfs server' + % server) + try: + cliapp.ssh_runcmd( + 'root@%s' % server, ['systemctl', 'is-enabled', + 'nfs-server.service']) + + except cliapp.AppException: + raise cliapp.AppException('server %s does not control its ' + 'nfs server by systemd' % server) + + # TFTP server exports /srv/nfsboot/tftp + tftp_root = os.path.join(self._nfsboot_root, 'tftp') + try: + cliapp.ssh_runcmd( + 'root@%s' % server, ['test' , '-d', tftp_root]) + except cliapp.AppException: + raise cliapp.AppException('server %s does not export %s' % + (tftp_root, server)) + + def version_exists(self, versioned_root, location): + try: + cliapp.ssh_runcmd('root@%s' % location, + ['test', '-d', versioned_root]) + except cliapp.AppException: + return False + + return True + + +NFSBootCheckExtension().run() diff --git a/extensions/nfsboot.configure b/extensions/nfsboot.configure new file mode 100755 index 00000000..6a68dc48 --- /dev/null +++ b/extensions/nfsboot.configure @@ -0,0 +1,30 @@ +#!/bin/sh +# Copyright (C) 2013-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +# Remove all networking interfaces. On nfsboot systems, eth0 is set up +# during kernel init, and the normal ifup@eth0.service systemd unit +# would break the NFS connection and cause the system to hang. + + +set -e +if [ "$NFSBOOT_CONFIGURE" ]; then + # Remove all networking interfaces but loopback + cat > "$1/etc/network/interfaces" <<EOF +auto lo +iface lo inet loopback +EOF + +fi diff --git a/extensions/nfsboot.write b/extensions/nfsboot.write new file mode 100755 index 00000000..d928775e --- /dev/null +++ b/extensions/nfsboot.write @@ -0,0 +1,202 @@ +#!/usr/bin/python +# Copyright (C) 2013-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +'''A Morph deployment write extension for deploying to an nfsboot server + +*** DO NOT USE *** +- This was written before 'proper' deployment mechanisms were in place +It is unlikely to work at all and will not work correctly + +Use the pxeboot write extension instead + +*** + + + +An nfsboot server is defined as a baserock system that has tftp and nfs +servers running, the tftp server is exporting the contents of +/srv/nfsboot/tftp/ and the user has sufficient permissions to create nfs roots +in /srv/nfsboot/nfs/ + +''' + + +import cliapp +import os +import glob + +import morphlib.writeexts + + +class NFSBootWriteExtension(morphlib.writeexts.WriteExtension): + + '''Create an NFS root and kernel on TFTP during Morph's deployment. + + The location command line argument is the hostname of the nfsboot server. + The user is expected to provide the location argument + using the following syntax: + + HOST + + where: + + * HOST is the host of the nfsboot server + + The extension will connect to root@HOST via ssh to copy the kernel and + rootfs, and configure the nfs server. + + It requires root because it uses systemd, and reads/writes to /etc. + + ''' + + _nfsboot_root = '/srv/nfsboot' + + def process_args(self, args): + if len(args) != 2: + raise cliapp.AppException('Wrong number of command line args') + + temp_root, location = args + + version_label = os.getenv('VERSION_LABEL', 'factory') + hostname = os.environ['HOSTNAME'] + + versioned_root = os.path.join(self._nfsboot_root, hostname, 'systems', + version_label) + + self.copy_rootfs(temp_root, location, versioned_root, hostname) + self.copy_kernel(temp_root, location, versioned_root, version_label, + hostname) + self.configure_nfs(location, hostname) + + def create_local_state(self, location, hostname): + statedir = os.path.join(self._nfsboot_root, hostname, 'state') + subdirs = [os.path.join(statedir, 'home'), + os.path.join(statedir, 'opt'), + os.path.join(statedir, 'srv')] + cliapp.ssh_runcmd('root@%s' % location, + ['mkdir', '-p'] + subdirs) + + def copy_kernel(self, temp_root, location, versioned_root, version, + hostname): + bootdir = os.path.join(temp_root, 'boot') + image_names = ['vmlinuz', 'zImage', 'uImage'] + for name in image_names: + try_path = os.path.join(bootdir, name) + if os.path.exists(try_path): + kernel_src = try_path + break + else: + raise cliapp.AppException( + 'Could not find a kernel in the system: none of ' + '%s found' % ', '.join(image_names)) + + kernel_dest = os.path.join(versioned_root, 'orig', 'kernel') + rsync_dest = 'root@%s:%s' % (location, kernel_dest) + self.status(msg='Copying kernel') + cliapp.runcmd( + ['rsync', '-s', kernel_src, rsync_dest]) + + # Link the kernel to the right place + self.status(msg='Creating links to kernel in tftp directory') + tftp_dir = os.path.join(self._nfsboot_root , 'tftp') + versioned_kernel_name = "%s-%s" % (hostname, version) + kernel_name = hostname + try: + cliapp.ssh_runcmd('root@%s' % location, + ['ln', '-f', kernel_dest, + os.path.join(tftp_dir, versioned_kernel_name)]) + + cliapp.ssh_runcmd('root@%s' % location, + ['ln', '-sf', versioned_kernel_name, + os.path.join(tftp_dir, kernel_name)]) + except cliapp.AppException: + raise cliapp.AppException('Could not create symlinks to the ' + 'kernel at %s in %s on %s' + % (kernel_dest, tftp_dir, location)) + + def copy_rootfs(self, temp_root, location, versioned_root, hostname): + rootfs_src = temp_root + '/' + orig_path = os.path.join(versioned_root, 'orig') + run_path = os.path.join(versioned_root, 'run') + + self.status(msg='Creating destination directories') + try: + cliapp.ssh_runcmd('root@%s' % location, + ['mkdir', '-p', orig_path, run_path]) + except cliapp.AppException: + raise cliapp.AppException('Could not create dirs %s and %s on %s' + % (orig_path, run_path, location)) + + self.status(msg='Creating \'orig\' rootfs') + cliapp.runcmd( + ['rsync', '-asXSPH', '--delete', rootfs_src, + 'root@%s:%s' % (location, orig_path)]) + + self.status(msg='Creating \'run\' rootfs') + try: + cliapp.ssh_runcmd('root@%s' % location, + ['rm', '-rf', run_path]) + cliapp.ssh_runcmd('root@%s' % location, + ['cp', '-al', orig_path, run_path]) + cliapp.ssh_runcmd('root@%s' % location, + ['rm', '-rf', os.path.join(run_path, 'etc')]) + cliapp.ssh_runcmd('root@%s' % location, + ['cp', '-a', os.path.join(orig_path, 'etc'), + os.path.join(run_path, 'etc')]) + except cliapp.AppException: + raise cliapp.AppException('Could not create \'run\' rootfs' + ' from \'orig\'') + + self.status(msg='Linking \'default\' to latest system') + try: + cliapp.ssh_runcmd('root@%s' % location, + ['ln', '-sfn', versioned_root, + os.path.join(self._nfsboot_root, hostname, 'systems', + 'default')]) + except cliapp.AppException: + raise cliapp.AppException('Could not link \'default\' to %s' + % versioned_root) + + def configure_nfs(self, location, hostname): + exported_path = os.path.join(self._nfsboot_root, hostname) + exports_path = '/etc/exports' + # If that path is not already exported: + try: + cliapp.ssh_runcmd( + 'root@%s' % location, ['grep', '-q', exported_path, + exports_path]) + except cliapp.AppException: + ip_mask = '*' + options = 'rw,no_subtree_check,no_root_squash,async' + exports_string = '%s %s(%s)\n' % (exported_path, ip_mask, options) + exports_append_sh = '''\ +set -eu +target="$1" +temp=$(mktemp) +cat "$target" > "$temp" +cat >> "$temp" +mv "$temp" "$target" +''' + cliapp.ssh_runcmd( + 'root@%s' % location, + ['sh', '-c', exports_append_sh, '--', exports_path], + feed_stdin=exports_string) + cliapp.ssh_runcmd( + 'root@%s' % location, ['systemctl', 'restart', + 'nfs-server.service']) + + +NFSBootWriteExtension().run() diff --git a/extensions/nfsboot.write.help b/extensions/nfsboot.write.help new file mode 100644 index 00000000..186c479a --- /dev/null +++ b/extensions/nfsboot.write.help @@ -0,0 +1,33 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + *** DO NOT USE *** + - This was written before 'proper' deployment mechanisms were in place. + It is unlikely to work at all, and will not work correctly. + + Use the pxeboot write extension instead + + *** + Deploy a system image and kernel to an nfsboot server. + + An nfsboot server is defined as a baserock system that has + tftp and nfs servers running, the tftp server is exporting + the contents of /srv/nfsboot/tftp/ and the user has sufficient + permissions to create nfs roots in /srv/nfsboot/nfs/. + + The `location` argument is the hostname of the nfsboot server. + + The extension will connect to root@HOST via ssh to copy the + kernel and rootfs, and configure the nfs server. diff --git a/openstack-ceilometer.configure b/extensions/openstack-ceilometer.configure index 9c0b7b6d..9c0b7b6d 100644 --- a/openstack-ceilometer.configure +++ b/extensions/openstack-ceilometer.configure diff --git a/openstack-cinder.configure b/extensions/openstack-cinder.configure index 4c32e11a..4c32e11a 100644 --- a/openstack-cinder.configure +++ b/extensions/openstack-cinder.configure diff --git a/openstack-glance.configure b/extensions/openstack-glance.configure index 5da08895..5da08895 100644 --- a/openstack-glance.configure +++ b/extensions/openstack-glance.configure diff --git a/openstack-ironic.configure b/extensions/openstack-ironic.configure index 962bbcd1..962bbcd1 100644 --- a/openstack-ironic.configure +++ b/extensions/openstack-ironic.configure diff --git a/openstack-keystone.configure b/extensions/openstack-keystone.configure index 6b011b14..6b011b14 100644 --- a/openstack-keystone.configure +++ b/extensions/openstack-keystone.configure diff --git a/openstack-network.configure b/extensions/openstack-network.configure index 10be5a1c..10be5a1c 100644 --- a/openstack-network.configure +++ b/extensions/openstack-network.configure diff --git a/openstack-neutron.configure b/extensions/openstack-neutron.configure index 210222db..210222db 100644 --- a/openstack-neutron.configure +++ b/extensions/openstack-neutron.configure diff --git a/openstack-nova.configure b/extensions/openstack-nova.configure index 213f1852..213f1852 100644 --- a/openstack-nova.configure +++ b/extensions/openstack-nova.configure diff --git a/openstack-swift-controller.configure b/extensions/openstack-swift-controller.configure index 424ab57b..424ab57b 100644 --- a/openstack-swift-controller.configure +++ b/extensions/openstack-swift-controller.configure diff --git a/extensions/openstack.check b/extensions/openstack.check new file mode 100755 index 00000000..a3379763 --- /dev/null +++ b/extensions/openstack.check @@ -0,0 +1,90 @@ +#!/usr/bin/python +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +'''Preparatory checks for Morph 'openstack' write extension''' + +import cliapp +import os +import urlparse +import keystoneclient + +import morphlib.writeexts + + +class OpenStackCheckExtension(morphlib.writeexts.WriteExtension): + + def process_args(self, args): + if len(args) != 1: + raise cliapp.AppException('Wrong number of command line args') + + self.require_btrfs_in_deployment_host_kernel() + + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + raise cliapp.AppException( + 'Use the `ssh-rsync` write extension to deploy upgrades to an ' + 'existing remote system.') + + location = args[0] + self.check_location(location) + + self.check_imagename() + self.check_openstack_parameters(self._get_auth_parameters(location)) + + def _get_auth_parameters(self, location): + '''Check the environment variables needed and returns all. + + The environment variables are described in the class documentation. + ''' + + auth_keys = {'OPENSTACK_USER': 'username', + 'OPENSTACK_TENANT': 'tenant_name', + 'OPENSTACK_PASSWORD': 'password'} + + for key in auth_keys: + if os.environ.get(key, '') == '': + raise cliapp.AppException(key + ' was not given') + + auth_params = {auth_keys[key]: os.environ[key] for key in auth_keys} + auth_params['auth_url'] = location + return auth_params + + def check_imagename(self): + if os.environ.get('OPENSTACK_IMAGENAME', '') == '': + raise cliapp.AppException('OPENSTACK_IMAGENAME was not given') + + def check_location(self, location): + x = urlparse.urlparse(location) + if x.scheme not in ['http', 'https']: + raise cliapp.AppException('URL schema must be http or https in %s'\ + % location) + if (x.path != '/v2.0' and x.path != '/v2.0/'): + raise cliapp.AppException('API version must be v2.0 in %s'\ + % location) + + def check_openstack_parameters(self, auth_params): + ''' Check that we can connect to and authenticate with openstack ''' + + self.status(msg='Checking OpenStack credentials...') + + try: + keystoneclient.v2_0.Client(**auth_params) + except keystoneclient.exceptions.Unauthorized: + errmsg = ('Failed to authenticate with OpenStack ' + '(are your credentials correct?)') + raise cliapp.AppException(errmsg) + + +OpenStackCheckExtension().run() diff --git a/extensions/openstack.write b/extensions/openstack.write new file mode 100755 index 00000000..67e07c18 --- /dev/null +++ b/extensions/openstack.write @@ -0,0 +1,93 @@ +#!/usr/bin/python +# Copyright (C) 2013-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +'''A Morph deployment write extension for deploying to OpenStack.''' + + +import cliapp +import os +import tempfile +import urlparse + +import morphlib.writeexts + + +class OpenStackWriteExtension(morphlib.writeexts.WriteExtension): + + '''See openstack.write.help for documentation''' + + def process_args(self, args): + if len(args) != 2: + raise cliapp.AppException('Wrong number of command line args') + + temp_root, location = args + + os_params = self.get_openstack_parameters() + + fd, raw_disk = tempfile.mkstemp() + os.close(fd) + self.create_local_system(temp_root, raw_disk) + self.status(msg='Temporary disk image has been created at %s' + % raw_disk) + + self.set_extlinux_root_to_virtio(raw_disk) + + self.configure_openstack_image(raw_disk, location, os_params) + + def set_extlinux_root_to_virtio(self, raw_disk): + '''Re-configures extlinux to use virtio disks''' + self.status(msg='Updating extlinux.conf') + with self.mount(raw_disk) as mp: + path = os.path.join(mp, 'extlinux.conf') + + with open(path) as f: + extlinux_conf = f.read() + + extlinux_conf = extlinux_conf.replace('root=/dev/sda', + 'root=/dev/vda') + with open(path, "w") as f: + f.write(extlinux_conf) + + def get_openstack_parameters(self): + '''Get the environment variables needed. + + The environment variables are described in the class documentation. + ''' + + keys = ('OPENSTACK_USER', 'OPENSTACK_TENANT', + 'OPENSTACK_IMAGENAME', 'OPENSTACK_PASSWORD') + return (os.environ[key] for key in keys) + + def configure_openstack_image(self, raw_disk, auth_url, os_params): + '''Configure the image in OpenStack using glance-client''' + self.status(msg='Configuring OpenStack image...') + + username, tenant_name, image_name, password = os_params + cmdline = ['glance', + '--os-username', username, + '--os-tenant-name', tenant_name, + '--os-password', password, + '--os-auth-url', auth_url, + 'image-create', + '--name=%s' % image_name, + '--disk-format=raw', + '--container-format', 'bare', + '--file', raw_disk] + cliapp.runcmd(cmdline) + + self.status(msg='Image configured.') + +OpenStackWriteExtension().run() diff --git a/extensions/openstack.write.help b/extensions/openstack.write.help new file mode 100644 index 00000000..26983060 --- /dev/null +++ b/extensions/openstack.write.help @@ -0,0 +1,51 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + + Deploy a Baserock system as a *new* OpenStack virtual machine. + (Use the `ssh-rsync` write extension to deploy upgrades to an *existing* + VM) + + Deploys the system to the OpenStack host using python-glanceclient. + + Parameters: + + * location: the authentication url of the OpenStack server using the + following syntax: + + http://HOST:PORT/VERSION + + where + + * HOST is the host running OpenStack + * PORT is the port which is using OpenStack for authentications. + * VERSION is the authentication version of OpenStack (Only v2.0 + supported) + + * OPENSTACK_USER=username: the username to use in the `--os-username` + argument to `glance`. + + * OPENSTACK_TENANT=tenant: the project name to use in the + `--os-tenant-name` argument to `glance`. + + * OPENSTACK_IMAGENAME=imagename: the name of the image to use in the + `--name` argument to `glance`. + + * OPENSTACK_PASSWORD=password: the password of the OpenStack user. (We + recommend passing this on the command-line, rather than setting an + environment variable or storing it in a cluster cluster definition file.) + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/pxeboot.check b/extensions/pxeboot.check index 611708a9..611708a9 100755 --- a/pxeboot.check +++ b/extensions/pxeboot.check diff --git a/pxeboot.write b/extensions/pxeboot.write index 3a12ebcc..3a12ebcc 100644 --- a/pxeboot.write +++ b/extensions/pxeboot.write diff --git a/pxeboot.write.help b/extensions/pxeboot.write.help index 7cb78bce..7cb78bce 100644 --- a/pxeboot.write.help +++ b/extensions/pxeboot.write.help diff --git a/extensions/rawdisk.check b/extensions/rawdisk.check new file mode 100755 index 00000000..9be0ce91 --- /dev/null +++ b/extensions/rawdisk.check @@ -0,0 +1,53 @@ +#!/usr/bin/python +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +'''Preparatory checks for Morph 'rawdisk' write extension''' + +import cliapp + +import morphlib.writeexts + +import os + + +class RawdiskCheckExtension(morphlib.writeexts.WriteExtension): + def process_args(self, args): + if len(args) != 1: + raise cliapp.AppException('Wrong number of command line args') + + self.require_btrfs_in_deployment_host_kernel() + + location = args[0] + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + if not self.is_device(location): + if not os.path.isfile(location): + raise cliapp.AppException( + 'Cannot upgrade %s: it is not an existing disk image' % + location) + + version_label = os.environ.get('VERSION_LABEL') + if version_label is None: + raise cliapp.AppException( + 'VERSION_LABEL was not given. It is required when ' + 'upgrading an existing system.') + else: + if not self.is_device(location): + if os.path.exists(location): + raise cliapp.AppException( + 'Target %s already exists. Use `morph upgrade` if you ' + 'want to update an existing image.' % location) + +RawdiskCheckExtension().run() diff --git a/extensions/rawdisk.write b/extensions/rawdisk.write new file mode 100755 index 00000000..6f2d45ba --- /dev/null +++ b/extensions/rawdisk.write @@ -0,0 +1,108 @@ +#!/usr/bin/python +# Copyright (C) 2012-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +'''A Morph deployment write extension for raw disk images.''' + + +import cliapp +import os +import sys +import time +import tempfile + +import morphlib.writeexts + + +class RawDiskWriteExtension(morphlib.writeexts.WriteExtension): + + '''See rawdisk.write.help for documentation''' + + def process_args(self, args): + if len(args) != 2: + raise cliapp.AppException('Wrong number of command line args') + + temp_root, location = args + upgrade = self.get_environment_boolean('UPGRADE') + + if upgrade: + self.upgrade_local_system(location, temp_root) + else: + try: + if not self.is_device(location): + with self.created_disk_image(location): + self.format_btrfs(location) + self.create_system(temp_root, location) + self.status(msg='Disk image has been created at %s' % + location) + else: + self.format_btrfs(location) + self.create_system(temp_root, location) + self.status(msg='System deployed to %s' % location) + except Exception: + self.status(msg='Failure to deploy system to %s' % + location) + raise + + def upgrade_local_system(self, raw_disk, temp_root): + self.complete_fstab_for_btrfs_layout(temp_root) + + with self.mount(raw_disk) as mp: + version_label = self.get_version_label(mp) + self.status(msg='Updating image to a new version with label %s' % + version_label) + + version_root = os.path.join(mp, 'systems', version_label) + os.mkdir(version_root) + + old_orig = os.path.join(mp, 'systems', 'default', 'orig') + new_orig = os.path.join(version_root, 'orig') + cliapp.runcmd( + ['btrfs', 'subvolume', 'snapshot', old_orig, new_orig]) + + cliapp.runcmd( + ['rsync', '-a', '--checksum', '--numeric-ids', '--delete', + temp_root + os.path.sep, new_orig]) + + self.create_run(version_root) + + default_path = os.path.join(mp, 'systems', 'default') + if os.path.exists(default_path): + os.remove(default_path) + else: + # we are upgrading and old system that does + # not have an updated extlinux config file + if self.bootloader_config_is_wanted(): + self.generate_bootloader_config(mp) + self.install_bootloader(mp) + os.symlink(version_label, default_path) + + if self.bootloader_config_is_wanted(): + self.install_kernel(version_root, temp_root) + + def get_version_label(self, mp): + version_label = os.environ.get('VERSION_LABEL') + + if version_label is None: + raise cliapp.AppException('VERSION_LABEL was not given') + + if os.path.exists(os.path.join(mp, 'systems', version_label)): + raise cliapp.AppException('VERSION_LABEL %s already exists' + % version_label) + + return version_label + + +RawDiskWriteExtension().run() diff --git a/extensions/rawdisk.write.help b/extensions/rawdisk.write.help new file mode 100644 index 00000000..52ed73fb --- /dev/null +++ b/extensions/rawdisk.write.help @@ -0,0 +1,82 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + + Write a system produced by Morph to a physical disk, or to a file that can + be used as a virtual disk. The target will be formatted as a single Btrfs + partition, with the system image written to a subvolume in /systems, and + other subvolumes created for /home, /opt, /root, /srv and /var. + + When written to a physical drive, the drive can be used as the boot device + for a 'real' machine. + + When written to a file, the file can be used independently of `morph` to + create virtual machines with KVM / libvirt, OpenStack or, after converting + it to VDI format, VirtualBox. + + `morph deploy` will fail if the file specified by `location` already + exists. + + If used in `morph upgrade`, the rootfs produced by 'morph build' is added + to the existing raw disk image or device as an additional btrfs sub-volume. + `morph upgrade` will fail if the file specified by `location` does not + exist, or is not a Baserock raw disk image. (Most users are unlikely to + need or use this functionality: it is useful mainly for developers working + on the Baserock tools.) + + Parameters: + + * location: the pathname of the disk image to be created/upgraded, or the + path to the physical device. + + * VERSION_LABEL=label - should contain only alpha-numeric + characters and the '-' (hyphen) character. Mandatory if being used with + `morph update` + + * INITRAMFS_PATH=path: the location of an initramfs for the bootloader to + tell Linux to use, rather than booting the rootfs directly. + + * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree + binary - Give the full path (without a leading /) to the location of the + DTB in the built system image . The deployment will fail if `path` does + not exist. + + * BOOTLOADER_INSTALL=value: the bootloader to be installed + **(MANDATORY)** for non-x86 systems + + allowed values = + - 'extlinux' (default) - the extlinux bootloader will + be installed + - 'none' - no bootloader will be installed by `morph deploy`. A + bootloader must be installed manually. This value must be used when + deploying non-x86 systems such as ARM. + + * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used. + If not specified for x86-32 and x86-64 systems, 'extlinux' will be used + + allowed values = + - 'extlinux' + + * KERNEL_ARGS=args: optional additional kernel command-line parameters to + be appended to the default set. The default set is: + + 'rw init=/sbin/init rootfstype=btrfs \ + rootflags=subvol=systems/default/run \ + root=[name or UUID of root filesystem]' + + (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt) + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/sdk.write b/extensions/sdk.write index 8d3d2a63..8d3d2a63 100755 --- a/sdk.write +++ b/extensions/sdk.write diff --git a/extensions/set-hostname.configure b/extensions/set-hostname.configure new file mode 100755 index 00000000..4b2424d8 --- /dev/null +++ b/extensions/set-hostname.configure @@ -0,0 +1,26 @@ +#!/bin/sh +# Copyright (C) 2013,2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +# Set hostname on system from HOSTNAME. + + +set -e + +if [ -n "$HOSTNAME" ] +then + echo "$HOSTNAME" > "$1/etc/hostname" +fi + diff --git a/extensions/simple-network.configure b/extensions/simple-network.configure new file mode 100755 index 00000000..4a70f311 --- /dev/null +++ b/extensions/simple-network.configure @@ -0,0 +1,292 @@ +#!/usr/bin/python +# Copyright (C) 2013,2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +'''A Morph deployment configuration extension to handle network configutation + +This extension prepares /etc/network/interfaces and networkd .network files +in /etc/systemd/network/ with the interfaces specified during deployment. + +If no network configuration is provided, eth0 will be configured for DHCP +with the hostname of the system in the case of /etc/network/interfaces. +In the case of networkd, any interface starting by e* will be configured +for DHCP +''' + + +import os +import sys +import errno +import cliapp + +import morphlib + + +class SimpleNetworkError(morphlib.Error): + '''Errors associated with simple network setup''' + pass + + +class SimpleNetworkConfigurationExtension(cliapp.Application): + '''Configure /etc/network/interfaces and generate networkd .network files + + Reading NETWORK_CONFIG, this extension sets up /etc/network/interfaces + and .network files in /etc/systemd/network/. + ''' + + def process_args(self, args): + network_config = os.environ.get("NETWORK_CONFIG") + + self.rename_networkd_chunk_file(args) + + if network_config is None: + self.generate_default_network_config(args) + else: + self.status(msg="Processing NETWORK_CONFIG=%(nc)s", + nc=network_config) + + stanzas = self.parse_network_stanzas(network_config) + + self.generate_interfaces_file(args, stanzas) + self.generate_networkd_files(args, stanzas) + + def rename_networkd_chunk_file(self, args): + """Rename the 10-dchp.network file generated in the systemd chunk + + The systemd chunk will place something in 10-dhcp.network, which will + have higher precedence than anything added in this extension (we + start at 50-*). + + We should check for that file and rename it instead remove it in + case the file is being used by the user. + + Until both the following happen, we should continue to rename that + default config file: + + 1. simple-network.configure is always run when systemd is included + 2. We've been building systems without systemd including that default + networkd config for long enough that nobody should be including + that config file. + """ + file_path = os.path.join(args[0], "etc", "systemd", "network", + "10-dhcp.network") + + if os.path.isfile(file_path): + try: + os.rename(file_path, file_path + ".morph") + self.status(msg="Renaming networkd file from systemd chunk: \ + %(f)s to %(f)s.morph", f=file_path) + except OSError: + pass + + def generate_default_network_config(self, args): + """Generate default network config: DHCP in all the interfaces""" + + default_network_config_interfaces = "lo:loopback;" \ + "eth0:dhcp,hostname=$(hostname)" + default_network_config_networkd = "e*:dhcp" + + stanzas_interfaces = self.parse_network_stanzas( + default_network_config_interfaces) + stanzas_networkd = self.parse_network_stanzas( + default_network_config_networkd) + + self.generate_interfaces_file(args, stanzas_interfaces) + self.generate_networkd_files(args, stanzas_networkd) + + def generate_interfaces_file(self, args, stanzas): + """Generate /etc/network/interfaces file""" + + iface_file = self.generate_iface_file(stanzas) + + directory_path = os.path.join(args[0], "etc", "network") + self.make_sure_path_exists(directory_path) + file_path = os.path.join(directory_path, "interfaces") + with open(file_path, "w") as f: + f.write(iface_file) + + def generate_iface_file(self, stanzas): + """Generate an interfaces file from the provided stanzas. + + The interfaces will be sorted by name, with loopback sorted first. + """ + + def cmp_iface_names(a, b): + a = a['name'] + b = b['name'] + if a == "lo": + return -1 + elif b == "lo": + return 1 + else: + return cmp(a,b) + + return "\n".join(self.generate_iface_stanza(stanza) + for stanza in sorted(stanzas, cmp=cmp_iface_names)) + + def generate_iface_stanza(self, stanza): + """Generate an interfaces stanza from the provided data.""" + + name = stanza['name'] + itype = stanza['type'] + lines = ["auto %s" % name, "iface %s inet %s" % (name, itype)] + lines += [" %s %s" % elem for elem in stanza['args'].items()] + lines += [""] + return "\n".join(lines) + + def generate_networkd_files(self, args, stanzas): + """Generate .network files""" + + for i, stanza in enumerate(stanzas, 50): + iface_file = self.generate_networkd_file(stanza) + + if iface_file is None: + continue + + directory_path = os.path.join(args[0], "etc", "systemd", "network") + self.make_sure_path_exists(directory_path) + file_path = os.path.join(directory_path, + "%s-%s.network" % (i, stanza['name'])) + + with open(file_path, "w") as f: + f.write(iface_file) + + def generate_networkd_file(self, stanza): + """Generate an .network file from the provided data.""" + + name = stanza['name'] + itype = stanza['type'] + pairs = stanza['args'].items() + + if itype == "loopback": + return + + lines = ["[Match]"] + lines += ["Name=%s\n" % name] + lines += ["[Network]"] + if itype == "dhcp": + lines += ["DHCP=yes"] + else: + lines += self.generate_networkd_entries(pairs) + + return "\n".join(lines) + + def generate_networkd_entries(self, pairs): + """Generate networkd configuration entries with the other parameters""" + + address = None + netmask = None + gateway = None + dns = None + lines = [] + + for pair in pairs: + if pair[0] == 'address': + address = pair[1] + elif pair[0] == 'netmask': + netmask = pair[1] + elif pair[0] == 'gateway': + gateway = pair[1] + elif pair[0] == 'dns': + dns = pair[1] + + if address and netmask: + network_suffix = self.convert_net_mask_to_cidr_suffix (netmask); + address_line = address + '/' + str(network_suffix) + lines += ["Address=%s" % address_line] + elif address or netmask: + raise Exception('address and netmask must be specified together') + + if gateway: + lines += ["Gateway=%s" % gateway] + + if dns: + lines += ["DNS=%s" % dns] + + return lines + + def convert_net_mask_to_cidr_suffix(self, mask): + """Convert dotted decimal form of a subnet mask to CIDR suffix notation + + For example: 255.255.255.0 -> 24 + """ + return sum(bin(int(x)).count('1') for x in mask.split('.')) + + def parse_network_stanzas(self, config): + """Parse a network config environment variable into stanzas. + + Network config stanzas are semi-colon separated. + """ + + return [self.parse_network_stanza(s) for s in config.split(";")] + + def parse_network_stanza(self, stanza): + """Parse a network config stanza into name, type and arguments. + + Each stanza is of the form name:type[,arg=value]... + + For example: + lo:loopback + eth0:dhcp + eth1:static,address=10.0.0.1,netmask=255.255.0.0 + """ + elements = stanza.split(",") + lead = elements.pop(0).split(":") + if len(lead) != 2: + raise SimpleNetworkError("Stanza '%s' is missing its type" % + stanza) + iface = lead[0] + iface_type = lead[1] + + if iface_type not in ['loopback', 'static', 'dhcp']: + raise SimpleNetworkError("Stanza '%s' has unknown interface type" + " '%s'" % (stanza, iface_type)) + + argpairs = [element.split("=", 1) for element in elements] + output_stanza = { "name": iface, + "type": iface_type, + "args": {} } + for argpair in argpairs: + if len(argpair) != 2: + raise SimpleNetworkError("Stanza '%s' has bad argument '%r'" + % (stanza, argpair.pop(0))) + if argpair[0] in output_stanza["args"]: + raise SimpleNetworkError("Stanza '%s' has repeated argument" + " %s" % (stanza, argpair[0])) + output_stanza["args"][argpair[0]] = argpair[1] + + return output_stanza + + def make_sure_path_exists(self, path): + try: + os.makedirs(path) + except OSError as e: + if e.errno == errno.EEXIST and os.path.isdir(path): + pass + else: + raise SimpleNetworkError("Unable to create directory '%s'" + % path) + + def status(self, **kwargs): + '''Provide status output. + + The ``msg`` keyword argument is the actual message, + the rest are values for fields in the message as interpolated + by %. + + ''' + + self.output.write('%s\n' % (kwargs['msg'] % kwargs)) + +SimpleNetworkConfigurationExtension().run() diff --git a/extensions/ssh-rsync.check b/extensions/ssh-rsync.check new file mode 100755 index 00000000..c3bdfd29 --- /dev/null +++ b/extensions/ssh-rsync.check @@ -0,0 +1,64 @@ +#!/usr/bin/python +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +'''Preparatory checks for Morph 'ssh-rsync' write extension''' + +import cliapp + +import os + +import morphlib.writeexts + +class SshRsyncCheckExtension(morphlib.writeexts.WriteExtension): + def process_args(self, args): + if len(args) != 1: + raise cliapp.AppException('Wrong number of command line args') + + upgrade = self.get_environment_boolean('UPGRADE') + if not upgrade: + raise cliapp.AppException( + 'The ssh-rsync write is for upgrading existing remote ' + 'Baserock machines. It cannot be used for an initial ' + 'deployment.') + + if os.environ.get('VERSION_LABEL', '') == '': + raise cliapp.AppException( + 'A VERSION_LABEL must be set when deploying an upgrade.') + + location = args[0] + self.check_ssh_connectivity(location) + self.check_is_baserock_system(location) + + # The new system that being deployed as an upgrade must contain + # baserock-system-config-sync and system-version-manager. However, the + # old system simply needs to have SSH and rsync. + self.check_command_exists(location, 'rsync') + + def check_is_baserock_system(self, location): + output = cliapp.ssh_runcmd(location, ['sh', '-c', + 'test -d /baserock || echo -n dirnotfound']) + if output == 'dirnotfound': + raise cliapp.AppException('%s is not a baserock system' + % location) + + def check_command_exists(self, location, command): + test = 'type %s > /dev/null 2>&1 || echo -n cmdnotfound' % command + output = cliapp.ssh_runcmd(location, ['sh', '-c', test]) + if output == 'cmdnotfound': + raise cliapp.AppException( + "%s does not have %s" % (location, command)) + + +SshRsyncCheckExtension().run() diff --git a/extensions/ssh-rsync.write b/extensions/ssh-rsync.write new file mode 100755 index 00000000..6d596500 --- /dev/null +++ b/extensions/ssh-rsync.write @@ -0,0 +1,172 @@ +#!/usr/bin/python +# Copyright (C) 2013-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +'''A Morph deployment write extension for upgrading systems over ssh.''' + + +import contextlib +import cliapp +import os +import sys +import time +import tempfile + +import morphlib.writeexts + + +def ssh_runcmd_ignore_failure(location, command, **kwargs): + try: + return cliapp.ssh_runcmd(location, command, **kwargs) + except cliapp.AppException: + pass + + +class SshRsyncWriteExtension(morphlib.writeexts.WriteExtension): + + '''See ssh-rsync.write.help for documentation''' + + + def find_root_disk(self, location): + '''Read /proc/mounts on location to find which device contains "/"''' + + self.status(msg='Finding device that contains "/"') + contents = cliapp.ssh_runcmd(location, ['cat', '/proc/mounts']) + for line in contents.splitlines(): + line_words = line.split() + if (line_words[1] == '/' and line_words[0] != 'rootfs'): + return line_words[0] + + @contextlib.contextmanager + def _remote_mount_point(self, location): + self.status(msg='Creating remote mount point') + remote_mnt = cliapp.ssh_runcmd(location, ['mktemp', '-d']).strip() + try: + yield remote_mnt + finally: + self.status(msg='Removing remote mount point') + cliapp.ssh_runcmd(location, ['rmdir', remote_mnt]) + + @contextlib.contextmanager + def _remote_mount(self, location, root_disk, mountpoint): + self.status(msg='Mounting root disk') + cliapp.ssh_runcmd(location, ['mount', root_disk, mountpoint]) + try: + yield + finally: + self.status(msg='Unmounting root disk') + cliapp.ssh_runcmd(location, ['umount', mountpoint]) + + @contextlib.contextmanager + def _created_version_root(self, location, remote_mnt, version_label): + version_root = os.path.join(remote_mnt, 'systems', version_label) + self.status(msg='Creating %(root)s', root=version_root) + cliapp.ssh_runcmd(location, ['mkdir', version_root]) + try: + yield version_root + except BaseException as e: + # catch all, we always want to clean up + self.status(msg='Cleaning up %(root)s', root=version_root) + ssh_runcmd_ignore_failure(location, ['rmdir', version_root]) + raise + + def get_old_orig(self, location, remote_mnt): + '''Identify which subvolume to snapshot from''' + + # rawdisk upgrades use 'default' + return os.path.join(remote_mnt, 'systems', 'default', 'orig') + + @contextlib.contextmanager + def _created_orig_subvolume(self, location, remote_mnt, version_root): + self.status(msg='Creating "orig" subvolume') + old_orig = self.get_old_orig(location, remote_mnt) + new_orig = os.path.join(version_root, 'orig') + cliapp.ssh_runcmd(location, ['btrfs', 'subvolume', 'snapshot', + old_orig, new_orig]) + try: + yield new_orig + except BaseException as e: + ssh_runcmd_ignore_failure( + location, ['btrfs', 'subvolume', 'delete', new_orig]) + raise + + def populate_remote_orig(self, location, new_orig, temp_root): + '''Populate the subvolume version_root/orig on location''' + + self.status(msg='Populating "orig" subvolume') + cliapp.runcmd(['rsync', '-as', '--checksum', '--numeric-ids', + '--delete', temp_root + os.path.sep, + '%s:%s' % (location, new_orig)]) + + @contextlib.contextmanager + def _deployed_version(self, location, version_label, + system_config_sync, system_version_manager): + self.status(msg='Calling system-version-manager to deploy upgrade') + deployment = os.path.join('/systems', version_label, 'orig') + cliapp.ssh_runcmd(location, + ['env', 'BASEROCK_SYSTEM_CONFIG_SYNC='+system_config_sync, + system_version_manager, 'deploy', deployment]) + try: + yield deployment + except BaseException as e: + self.status(msg='Cleaning up failed version installation') + cliapp.ssh_runcmd(location, + [system_version_manager, 'remove', version_label]) + raise + + def upgrade_remote_system(self, location, temp_root): + root_disk = self.find_root_disk(location) + uuid = cliapp.ssh_runcmd(location, ['blkid', '-s', 'UUID', '-o', + 'value', root_disk]).strip() + + self.complete_fstab_for_btrfs_layout(temp_root, uuid) + + version_label = os.environ['VERSION_LABEL'] + autostart = self.get_environment_boolean('AUTOSTART') + + with self._remote_mount_point(location) as remote_mnt, \ + self._remote_mount(location, root_disk, remote_mnt), \ + self._created_version_root(location, remote_mnt, + version_label) as version_root, \ + self._created_orig_subvolume(location, remote_mnt, + version_root) as orig: + self.populate_remote_orig(location, orig, temp_root) + system_root = os.path.join(remote_mnt, 'systems', + version_label, 'orig') + config_sync = os.path.join(system_root, 'usr', 'bin', + 'baserock-system-config-sync') + version_manager = os.path.join(system_root, 'usr', 'bin', + 'system-version-manager') + with self._deployed_version(location, version_label, + config_sync, version_manager): + self.status(msg='Setting %(v)s as the new default system', + v=version_label) + cliapp.ssh_runcmd(location, [version_manager, + 'set-default', version_label]) + + if autostart: + self.status(msg="Rebooting into new system ...") + ssh_runcmd_ignore_failure(location, ['reboot']) + + def process_args(self, args): + if len(args) != 2: + raise cliapp.AppException('Wrong number of command line args') + + temp_root, location = args + + self.upgrade_remote_system(location, temp_root) + + +SshRsyncWriteExtension().run() diff --git a/extensions/ssh-rsync.write.help b/extensions/ssh-rsync.write.help new file mode 100644 index 00000000..f3f79ed5 --- /dev/null +++ b/extensions/ssh-rsync.write.help @@ -0,0 +1,50 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + + Upgrade a Baserock system which is already deployed: + - as a KVM/LibVirt, OpenStack or vbox-ssh virtual machine; + - on a Jetson board. + + Copies a binary delta over to the target system and arranges for it + to be bootable. + + The recommended way to use this extension is by calling `morph upgrade`. + Using `morph deploy --upgrade` is deprecated. + + The upgrade will fail if: + - no VM is deployed and running at `location`; + - the target system is not a Baserock system; + - the target's filesystem and its layout are not compatible with that + created by `morph deploy`." + + See also the 'Upgrading a Baserock installation' section of the 'Using + Baserock` page at wiki.baserock.org + http://wiki.baserock.org/devel-with/#index8h2 + + Parameters: + + * location: the 'user@hostname' string that will be used by ssh and rsync. + 'user' will always be `root` and `hostname` the hostname or address of + the system being upgraded. + + * VERSION_LABEL=label - **(MANDATORY)** should contain only alpha-numeric + characters and the '-' (hyphen) character. + + * AUTOSTART=<VALUE>` - boolean. If it is set, the VM will be started when + it has been deployed. + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/extensions/sshkeys.configure b/extensions/sshkeys.configure new file mode 100755 index 00000000..7a5a8379 --- /dev/null +++ b/extensions/sshkeys.configure @@ -0,0 +1,25 @@ +#!/bin/sh +# +# Copyright 2014 Codethink Ltd +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +set -e + +if [ "$SSHKEYS" ] +then + install -d -m 700 "$1/root/.ssh" + echo Adding Key in "$SSHKEYS" to authorized_keys file + cat $SSHKEYS >> "$1/root/.ssh/authorized_keys" +fi diff --git a/strip-gplv3.configure b/extensions/strip-gplv3.configure index c08061ad..c08061ad 100755 --- a/strip-gplv3.configure +++ b/extensions/strip-gplv3.configure diff --git a/swift-build-rings.yml b/extensions/swift-build-rings.yml index 1ffe9c37..1ffe9c37 100644 --- a/swift-build-rings.yml +++ b/extensions/swift-build-rings.yml diff --git a/swift-storage-devices-validate.py b/extensions/swift-storage-devices-validate.py index 57ab23d0..57ab23d0 100755 --- a/swift-storage-devices-validate.py +++ b/extensions/swift-storage-devices-validate.py diff --git a/swift-storage.configure b/extensions/swift-storage.configure index 391b392a..391b392a 100644 --- a/swift-storage.configure +++ b/extensions/swift-storage.configure diff --git a/extensions/sysroot.check b/extensions/sysroot.check new file mode 100755 index 00000000..71b35175 --- /dev/null +++ b/extensions/sysroot.check @@ -0,0 +1,23 @@ +#!/bin/sh +# Copyright (C) 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +# Preparatory checks for Morph 'sysroot' write extension + +set -eu + +if [ "$UPGRADE" == "yes" ]; then + echo >&2 "ERROR: Cannot upgrade a sysroot deployment" + exit 1 +fi diff --git a/extensions/sysroot.write b/extensions/sysroot.write new file mode 100755 index 00000000..46f1a780 --- /dev/null +++ b/extensions/sysroot.write @@ -0,0 +1,22 @@ +#!/bin/sh +# Copyright (C) 2014,2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +# A Morph write extension to deploy to another directory + +set -eu + +mkdir -p "$2" + +cp -a "$1"/* "$2" diff --git a/extensions/tar.check b/extensions/tar.check new file mode 100755 index 00000000..f2304d46 --- /dev/null +++ b/extensions/tar.check @@ -0,0 +1,23 @@ +#!/bin/sh +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +# Preparatory checks for Morph 'tar' write extension + +set -eu + +if [ "$UPGRADE" == "yes" ]; then + echo >&2 "ERROR: Cannot upgrade a tar file deployment." + exit 1 +fi diff --git a/extensions/tar.write b/extensions/tar.write new file mode 100755 index 00000000..01b545b4 --- /dev/null +++ b/extensions/tar.write @@ -0,0 +1,20 @@ +#!/bin/sh +# Copyright (C) 2013,2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +# A Morph write extension to deploy to a .tar file + +set -eu + +tar -C "$1" -cf "$2" . diff --git a/extensions/tar.write.help b/extensions/tar.write.help new file mode 100644 index 00000000..b45c61fa --- /dev/null +++ b/extensions/tar.write.help @@ -0,0 +1,19 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + Create a .tar file of the deployed system. + + The `location` argument is a pathname to the .tar file to be + created. diff --git a/trove.configure b/extensions/trove.configure index f823762c..f823762c 100755 --- a/trove.configure +++ b/extensions/trove.configure diff --git a/trove.configure.help b/extensions/trove.configure.help index c96bdf74..c96bdf74 100644 --- a/trove.configure.help +++ b/extensions/trove.configure.help diff --git a/vagrant.configure b/extensions/vagrant.configure index abc3ea0c..abc3ea0c 100644 --- a/vagrant.configure +++ b/extensions/vagrant.configure diff --git a/extensions/vdaboot.configure b/extensions/vdaboot.configure new file mode 100755 index 00000000..60de925b --- /dev/null +++ b/extensions/vdaboot.configure @@ -0,0 +1,33 @@ +#!/bin/sh +# Copyright (C) 2013,2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +# Change the "/" mount point to /dev/vda to use virtio disks. + +set -e + +if [ "$OPENSTACK_USER" ] +then + # Modifying fstab + if [ -f "$1/etc/fstab" ] + then + mv "$1/etc/fstab" "$1/etc/fstab.old" + awk 'BEGIN {print "/dev/vda / btrfs defaults,rw,noatime 0 1"}; + $2 != "/" {print $0 };' "$1/etc/fstab.old" > "$1/etc/fstab" + rm "$1/etc/fstab.old" + else + echo "/dev/vda / btrfs defaults,rw,noatime 0 1"> "$1/etc/fstab" + fi +fi diff --git a/extensions/virtualbox-ssh.check b/extensions/virtualbox-ssh.check new file mode 100755 index 00000000..a97f3294 --- /dev/null +++ b/extensions/virtualbox-ssh.check @@ -0,0 +1,36 @@ +#!/usr/bin/python +# Copyright (C) 2014-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + +'''Preparatory checks for Morph 'virtualbox-ssh' write extension''' + +import cliapp + +import morphlib.writeexts + + +class VirtualBoxPlusSshCheckExtension(morphlib.writeexts.WriteExtension): + def process_args(self, args): + if len(args) != 1: + raise cliapp.AppException('Wrong number of command line args') + + self.require_btrfs_in_deployment_host_kernel() + + upgrade = self.get_environment_boolean('UPGRADE') + if upgrade: + raise cliapp.AppException( + 'Use the `ssh-rsync` write extension to deploy upgrades to an ' + 'existing remote system.') + +VirtualBoxPlusSshCheckExtension().run() diff --git a/extensions/virtualbox-ssh.write b/extensions/virtualbox-ssh.write new file mode 100755 index 00000000..774f2b4f --- /dev/null +++ b/extensions/virtualbox-ssh.write @@ -0,0 +1,211 @@ +#!/usr/bin/python +# Copyright (C) 2012-2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program. If not, see <http://www.gnu.org/licenses/>. + + +'''A Morph deployment write extension for deploying to VirtualBox via ssh. + +VirtualBox is assumed to be running on a remote machine, which is +accessed over ssh. The machine gets created, but not started. + +See file virtualbox-ssh.write.help for documentation + +''' + + +import cliapp +import os +import re +import sys +import time +import tempfile +import urlparse + +import morphlib.writeexts + + +class VirtualBoxPlusSshWriteExtension(morphlib.writeexts.WriteExtension): + + def process_args(self, args): + if len(args) != 2: + raise cliapp.AppException('Wrong number of command line args') + + temp_root, location = args + ssh_host, vm_name, vdi_path = self.parse_location(location) + autostart = self.get_environment_boolean('AUTOSTART') + + vagrant = self.get_environment_boolean('VAGRANT') + + fd, raw_disk = tempfile.mkstemp() + os.close(fd) + self.create_local_system(temp_root, raw_disk) + + try: + self.transfer_and_convert_to_vdi( + raw_disk, ssh_host, vdi_path) + self.create_virtualbox_guest(ssh_host, vm_name, vdi_path, + autostart, vagrant) + except BaseException: + sys.stderr.write('Error deploying to VirtualBox') + os.remove(raw_disk) + cliapp.ssh_runcmd(ssh_host, ['rm', '-f', vdi_path]) + raise + else: + os.remove(raw_disk) + self.status( + msg='Virtual machine %(vm_name)s has been created', + vm_name=vm_name) + + def parse_location(self, location): + '''Parse the location argument to get relevant data.''' + + x = urlparse.urlparse(location) + if x.scheme != 'vbox+ssh': + raise cliapp.AppException( + 'URL schema must be vbox+ssh in %s' % location) + m = re.match('^/(?P<guest>[^/]+)(?P<path>/.+)$', x.path) + if not m: + raise cliapp.AppException('Cannot parse location %s' % location) + return x.netloc, m.group('guest'), m.group('path') + + def transfer_and_convert_to_vdi(self, raw_disk, ssh_host, vdi_path): + '''Transfer raw disk image to VirtualBox host, and convert to VDI.''' + + self.status(msg='Transfer disk and convert to VDI') + + st = os.lstat(raw_disk) + xfer_hole_path = morphlib.util.get_data_path('xfer-hole') + recv_hole = morphlib.util.get_data('recv-hole') + + ssh_remote_cmd = [ + 'sh', '-c', recv_hole, + 'dummy-argv0', 'vbox', vdi_path, str(st.st_size), + ] + + cliapp.runcmd( + ['python', xfer_hole_path, raw_disk], + ['ssh', ssh_host] + map(cliapp.shell_quote, ssh_remote_cmd), + stdout=None, stderr=None) + + def virtualbox_version(self, ssh_host): + 'Get the version number of the VirtualBox running on the remote host.' + + # --version gives a build id, which looks something like + # 1.2.3r456789, so we need to strip the suffix off and get a tuple + # of the (major, minor, patch) version, since comparing with a + # tuple is more reliable than a string and more convenient than + # comparing against the major, minor and patch numbers directly + self.status(msg='Checking version of remote VirtualBox') + build_id = cliapp.ssh_runcmd(ssh_host, ['VBoxManage', '--version']) + version_string = re.match(r"^([0-9\.]+).*$", build_id.strip()).group(1) + return tuple(int(s or '0') for s in version_string.split('.')) + + def create_virtualbox_guest(self, ssh_host, vm_name, vdi_path, autostart, + vagrant): + '''Create the VirtualBox virtual machine.''' + + self.status(msg='Create VirtualBox virtual machine') + + ram_mebibytes = str(self.get_ram_size() / (1024**2)) + + vcpu_count = str(self.get_vcpu_count()) + + if not vagrant: + hostonly_iface = self.get_host_interface(ssh_host) + + if self.virtualbox_version(ssh_host) < (4, 3, 0): + sataportcount_option = '--sataportcount' + else: + sataportcount_option = '--portcount' + + commands = [ + ['createvm', '--name', vm_name, '--ostype', 'Linux26_64', + '--register'], + ['modifyvm', vm_name, '--ioapic', 'on', + '--memory', ram_mebibytes, '--cpus', vcpu_count], + ['storagectl', vm_name, '--name', 'SATA Controller', + '--add', 'sata', '--bootable', 'on', sataportcount_option, '2'], + ['storageattach', vm_name, '--storagectl', 'SATA Controller', + '--port', '0', '--device', '0', '--type', 'hdd', '--medium', + vdi_path], + ] + if vagrant: + commands[1].extend(['--nic1', 'nat', + '--natnet1', 'default']) + else: + commands[1].extend(['--nic1', 'hostonly', + '--hostonlyadapter1', hostonly_iface, + '--nic2', 'nat', '--natnet2', 'default']) + + attach_disks = self.parse_attach_disks() + for device_no, disk in enumerate(attach_disks, 1): + cmd = ['storageattach', vm_name, + '--storagectl', 'SATA Controller', + '--port', str(device_no), + '--device', '0', + '--type', 'hdd', + '--medium', disk] + commands.append(cmd) + + if autostart: + commands.append(['startvm', vm_name]) + + for command in commands: + argv = ['VBoxManage'] + command + cliapp.ssh_runcmd(ssh_host, argv) + + def get_host_interface(self, ssh_host): + host_ipaddr = os.environ.get('HOST_IPADDR') + netmask = os.environ.get('NETMASK') + + if host_ipaddr is None: + raise cliapp.AppException('HOST_IPADDR was not given') + + if netmask is None: + raise cliapp.AppException('NETMASK was not given') + + # 'VBoxManage list hostonlyifs' retrieves a list with the hostonly + # interfaces on the host. For each interface, the following lines + # are shown on top: + # + # Name: vboxnet0 + # GUID: 786f6276-656e-4074-8000-0a0027000000 + # Dhcp: Disabled + # IPAddress: 192.168.100.1 + # + # The following command tries to retrieve the hostonly interface + # name (e.g. vboxnet0) associated with the given ip address. + iface = None + lines = cliapp.ssh_runcmd(ssh_host, + ['VBoxManage', 'list', 'hostonlyifs']).splitlines() + for i, v in enumerate(lines): + if host_ipaddr in v: + iface = lines[i-3].split()[1] + break + + if iface is None: + iface = cliapp.ssh_runcmd(ssh_host, + ['VBoxManage', 'hostonlyif', 'create']) + # 'VBoxManage hostonlyif create' shows the name of the + # created hostonly interface inside single quotes + iface = iface[iface.find("'") + 1 : iface.rfind("'")] + cliapp.ssh_runcmd(ssh_host, + ['VBoxManage', 'hostonlyif', + 'ipconfig', iface, + '--ip', host_ipaddr, + '--netmask', netmask]) + + return iface + +VirtualBoxPlusSshWriteExtension().run() diff --git a/extensions/virtualbox-ssh.write.help b/extensions/virtualbox-ssh.write.help new file mode 100644 index 00000000..2dbf988c --- /dev/null +++ b/extensions/virtualbox-ssh.write.help @@ -0,0 +1,135 @@ +# Copyright (C) 2014, 2015 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, see <http://www.gnu.org/licenses/>. + +help: | + + Deploy a Baserock system as a *new* VirtualBox virtual machine. + (Use the `ssh-rsync` write extension to deploy upgrades to an *existing* + VM) + + Connects to HOST via ssh to run VirtualBox's command line management tools. + + Parameters: + + * location: a custom URL scheme of the form `vbox+ssh://HOST/GUEST/PATH`, + where: + * HOST is the name of the host on which VirtualBox is running + * GUEST is the name of the guest VM on that host + * PATH is the path to the disk image that should be created, + on that host. For example, + `vbox+ssh://alice@192.168.122.1/testsys/home/alice/testys.img` where + * `alice@192.168.122.1` is the target host as given to ssh, + **from within the development host** (which may be + different from the target host's normal address); + * `testsys` is the name of the new guest VM'; + * `/home/alice/testys.img` is the pathname of the disk image files + on the target host. + + * HOSTNAME=name: the hostname of the **guest** VM within the network into + which it is being deployed. + + * DISK_SIZE=X: **(MANDATORY)** the size of the VM's primary virtual hard + disk. `X` should use a suffix of `K`, `M`, or `G` (in upper or lower + case) to indicate kilo-, mega-, or gigabytes. For example, + `DISK_SIZE=100G` would create a 100 gigabyte virtual hard disk. + + * RAM_SIZE=X: The amount of RAM that the virtual machine should allocate + for itself from the host. `X` is interpreted in the same as for + DISK_SIZE, and defaults to `1G`. + + * VCPUS=n: the number of virtual CPUs for the VM. Allowed values 1-32. Do + not use more CPU cores than you have available physically (real cores, + no hyperthreads). + + * INITRAMFS_PATH=path: the location of an initramfs for the bootloader to + tell Linux to use, rather than booting the rootfs directly. + + * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree + binary - Give the full path (without a leading /) to the location of the + DTB in the built system image . The deployment will fail if `path` does + not exist. + + * BOOTLOADER_INSTALL=value: the bootloader to be installed + **(MANDATORY)** for non-x86 systems + + allowed values = + - 'extlinux' (default) - the extlinux bootloader will + be installed + - 'none' - no bootloader will be installed by `morph deploy`. A + bootloader must be installed manually. This value must be used when + deploying non-x86 systems such as ARM. + + * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used. + If not specified for x86-32 and x86-64 systems, 'extlinux' will be used + + allowed values = + - 'extlinux' + + * KERNEL_ARGS=args: optional additional kernel command-line parameters to + be appended to the default set. The default set is: + + 'rw init=/sbin/init rootfstype=btrfs \ + rootflags=subvol=systems/default/run \ + root=[name or UUID of root filesystem]' + + (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt) + + * AUTOSTART=<VALUE> - boolean. If it is set, the VM will be started when + it has been deployed. + + * VAGRANT=<VALUE> - boolean. If it is set, then networking is configured + so that the VM will work with Vagrant. Otherwise networking is + configured to run directly in VirtualBox. + + * HOST_IPADDR=<ip_address> - the IP address of the VM host. + + * NETMASK=<netmask> - the netmask of the VM host. + + * NETWORK_CONFIG=<net_config> - `net_config` is used to set up the VM's + network interfaces. It is a string containing semi-colon separated + 'stanzas' where each stanza provides information about a network + interface. Each stanza is of the form name:type[,arg=value] e.g. + + lo:loopback + eth0:dhcp + eth1:static,address=10.0.0.1,netmask=255.255.0.0 + + An example of the NETWORK_CONFIG parameter (It should be in one line) + + `"lo:loopback;eth0:static,address=192.168.100.2,netmask=255.255.255.0; + eth1:dhcp,hostname=$(hostname)"` + + It is useful to configure one interface to use NAT to give the VM access + to the outside world and another interface to use the Virtual Box host + adapter to allow you to access the Trove from the host machine. + + The NAT interface eth1 is set up to use dhcp, the host-only adapter + interface is configured statically. + + Note: you must give the host-only adapter interface an address that lies + **on the same network** as the host adapter. So if the host adapter has + an IP of 192.168.100.1 eth0 should have an address such as + 192.168.100.42. + + The settings of the host adapter, including its IP can be changed either + in the VirtualBox manager UI + (https://www.virtualbox.org/manual/ch03.html#settings-network) + or via the VBoxManage command line + (https://www.virtualbox.org/manual/ch08.html#idp57572192) + + See Chapter 6 of the VirtualBox User Manual for more information about + virtual networking (https://www.virtualbox.org/manual/ch06.html) + + (See `morph help deploy` for details of how to pass parameters to write + extensions) diff --git a/chef/manifest b/install-files/chef/manifest index de6cc542..de6cc542 100644 --- a/chef/manifest +++ b/install-files/chef/manifest diff --git a/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator b/install-files/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator index 127bc84f..127bc84f 100755 --- a/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator +++ b/install-files/distbuild/lib/systemd/system-generators/ccache-nfs-mount-generator diff --git a/distbuild/manifest b/install-files/distbuild/manifest index 9363fa85..9363fa85 100644 --- a/distbuild/manifest +++ b/install-files/distbuild/manifest diff --git a/distbuild/usr/lib/distbuild-setup/ansible/distbuild-setup.yml b/install-files/distbuild/usr/lib/distbuild-setup/ansible/distbuild-setup.yml index c3074c63..c3074c63 100644 --- a/distbuild/usr/lib/distbuild-setup/ansible/distbuild-setup.yml +++ b/install-files/distbuild/usr/lib/distbuild-setup/ansible/distbuild-setup.yml diff --git a/mason/ansible/hosts b/install-files/distbuild/usr/lib/distbuild-setup/ansible/hosts index 5b97818d..5b97818d 100644 --- a/mason/ansible/hosts +++ b/install-files/distbuild/usr/lib/distbuild-setup/ansible/hosts diff --git a/distbuild/usr/lib/systemd/system/distbuild-setup.service b/install-files/distbuild/usr/lib/systemd/system/distbuild-setup.service index ec5f5a2d..ec5f5a2d 100644 --- a/distbuild/usr/lib/systemd/system/distbuild-setup.service +++ b/install-files/distbuild/usr/lib/systemd/system/distbuild-setup.service diff --git a/distbuild/usr/lib/systemd/system/morph-cache-server.service b/install-files/distbuild/usr/lib/systemd/system/morph-cache-server.service index f55f3b6d..f55f3b6d 100644 --- a/distbuild/usr/lib/systemd/system/morph-cache-server.service +++ b/install-files/distbuild/usr/lib/systemd/system/morph-cache-server.service diff --git a/distbuild/usr/lib/systemd/system/morph-controller-helper.service b/install-files/distbuild/usr/lib/systemd/system/morph-controller-helper.service index 3f30cbcf..3f30cbcf 100644 --- a/distbuild/usr/lib/systemd/system/morph-controller-helper.service +++ b/install-files/distbuild/usr/lib/systemd/system/morph-controller-helper.service diff --git a/distbuild/usr/lib/systemd/system/morph-controller.service b/install-files/distbuild/usr/lib/systemd/system/morph-controller.service index 1556d232..1556d232 100644 --- a/distbuild/usr/lib/systemd/system/morph-controller.service +++ b/install-files/distbuild/usr/lib/systemd/system/morph-controller.service diff --git a/distbuild/usr/lib/systemd/system/morph-worker-helper.service b/install-files/distbuild/usr/lib/systemd/system/morph-worker-helper.service index 28400701..28400701 100644 --- a/distbuild/usr/lib/systemd/system/morph-worker-helper.service +++ b/install-files/distbuild/usr/lib/systemd/system/morph-worker-helper.service diff --git a/distbuild/usr/lib/systemd/system/morph-worker.service b/install-files/distbuild/usr/lib/systemd/system/morph-worker.service index 90fea404..90fea404 100644 --- a/distbuild/usr/lib/systemd/system/morph-worker.service +++ b/install-files/distbuild/usr/lib/systemd/system/morph-worker.service diff --git a/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service b/install-files/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service index 8f06febd..8f06febd 120000 --- a/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service +++ b/install-files/distbuild/usr/lib/systemd/system/multi-user.target.wants/distbuild-setup.service diff --git a/distbuild/usr/share/distbuild-setup/morph-cache-server.conf b/install-files/distbuild/usr/share/distbuild-setup/morph-cache-server.conf index b9020e7d..b9020e7d 100644 --- a/distbuild/usr/share/distbuild-setup/morph-cache-server.conf +++ b/install-files/distbuild/usr/share/distbuild-setup/morph-cache-server.conf diff --git a/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf b/install-files/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf index 99d38739..99d38739 100644 --- a/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf +++ b/install-files/distbuild/usr/share/distbuild-setup/morph-controller-helper.conf diff --git a/distbuild/usr/share/distbuild-setup/morph-controller.conf b/install-files/distbuild/usr/share/distbuild-setup/morph-controller.conf index c16c0343..c16c0343 100644 --- a/distbuild/usr/share/distbuild-setup/morph-controller.conf +++ b/install-files/distbuild/usr/share/distbuild-setup/morph-controller.conf diff --git a/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf b/install-files/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf index 29d4ef3f..29d4ef3f 100644 --- a/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf +++ b/install-files/distbuild/usr/share/distbuild-setup/morph-worker-helper.conf diff --git a/distbuild/usr/share/distbuild-setup/morph-worker.conf b/install-files/distbuild/usr/share/distbuild-setup/morph-worker.conf index fb382bad..fb382bad 100644 --- a/distbuild/usr/share/distbuild-setup/morph-worker.conf +++ b/install-files/distbuild/usr/share/distbuild-setup/morph-worker.conf diff --git a/distbuild/usr/share/distbuild-setup/morph.conf b/install-files/distbuild/usr/share/distbuild-setup/morph.conf index 29de684c..29de684c 100644 --- a/distbuild/usr/share/distbuild-setup/morph.conf +++ b/install-files/distbuild/usr/share/distbuild-setup/morph.conf diff --git a/essential-files/etc/inputrc b/install-files/essential-files/etc/inputrc index ddee44cd..ddee44cd 100644 --- a/essential-files/etc/inputrc +++ b/install-files/essential-files/etc/inputrc diff --git a/essential-files/etc/os-release b/install-files/essential-files/etc/os-release index b729c75f..b729c75f 100644 --- a/essential-files/etc/os-release +++ b/install-files/essential-files/etc/os-release diff --git a/essential-files/etc/profile b/install-files/essential-files/etc/profile index b306a132..b306a132 100644 --- a/essential-files/etc/profile +++ b/install-files/essential-files/etc/profile diff --git a/essential-files/manifest b/install-files/essential-files/manifest index 2b77c237..2b77c237 100644 --- a/essential-files/manifest +++ b/install-files/essential-files/manifest diff --git a/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf b/install-files/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf index 174f1f03..174f1f03 100644 --- a/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf +++ b/install-files/essential-files/usr/lib/tmpfiles.d/shutdownramfs.conf diff --git a/genivi-devel-system-armv7/etc/morph.conf b/install-files/genivi-devel-system-armv7/etc/morph.conf index 8f384049..8f384049 120000 --- a/genivi-devel-system-armv7/etc/morph.conf +++ b/install-files/genivi-devel-system-armv7/etc/morph.conf diff --git a/genivi-devel-system-armv7/manifest b/install-files/genivi-devel-system-armv7/manifest index 31980633..31980633 100644 --- a/genivi-devel-system-armv7/manifest +++ b/install-files/genivi-devel-system-armv7/manifest diff --git a/genivi-devel-system-armv7/src/morph.conf b/install-files/genivi-devel-system-armv7/src/morph.conf index 76b6fde9..76b6fde9 100644 --- a/genivi-devel-system-armv7/src/morph.conf +++ b/install-files/genivi-devel-system-armv7/src/morph.conf diff --git a/moonshot/boot/m400-1003.dtb b/install-files/moonshot/boot/m400-1003.dtb Binary files differindex d6fd83ee..d6fd83ee 100644 --- a/moonshot/boot/m400-1003.dtb +++ b/install-files/moonshot/boot/m400-1003.dtb diff --git a/moonshot/manifest b/install-files/moonshot/manifest index dd80fe49..dd80fe49 100644 --- a/moonshot/manifest +++ b/install-files/moonshot/manifest diff --git a/openstack/etc/horizon/apache-horizon.conf b/install-files/openstack/etc/horizon/apache-horizon.conf index ea88897a..ea88897a 100644 --- a/openstack/etc/horizon/apache-horizon.conf +++ b/install-files/openstack/etc/horizon/apache-horizon.conf diff --git a/openstack/etc/horizon/openstack_dashboard/local_settings.py b/install-files/openstack/etc/horizon/openstack_dashboard/local_settings.py index febc3e70..febc3e70 100644 --- a/openstack/etc/horizon/openstack_dashboard/local_settings.py +++ b/install-files/openstack/etc/horizon/openstack_dashboard/local_settings.py diff --git a/openstack/etc/tempest/tempest.conf b/install-files/openstack/etc/tempest/tempest.conf index 05f0eca1..05f0eca1 100644 --- a/openstack/etc/tempest/tempest.conf +++ b/install-files/openstack/etc/tempest/tempest.conf diff --git a/openstack/manifest b/install-files/openstack/manifest index aa4d5430..aa4d5430 100644 --- a/openstack/manifest +++ b/install-files/openstack/manifest diff --git a/openstack/usr/lib/sysctl.d/neutron.conf b/install-files/openstack/usr/lib/sysctl.d/neutron.conf index 644ca116..644ca116 100644 --- a/openstack/usr/lib/sysctl.d/neutron.conf +++ b/install-files/openstack/usr/lib/sysctl.d/neutron.conf diff --git a/openstack/usr/lib/systemd/system/apache-httpd.service b/install-files/openstack/usr/lib/systemd/system/apache-httpd.service index e2a840c6..e2a840c6 100644 --- a/openstack/usr/lib/systemd/system/apache-httpd.service +++ b/install-files/openstack/usr/lib/systemd/system/apache-httpd.service diff --git a/openstack/usr/lib/systemd/system/iscsi-setup.service b/install-files/openstack/usr/lib/systemd/system/iscsi-setup.service index 4cb10045..4cb10045 100644 --- a/openstack/usr/lib/systemd/system/iscsi-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/iscsi-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service index 6e3ada59..6e3ada59 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-evaluator.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service index 7a3e1c91..7a3e1c91 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-alarm-notifier.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service index eb0293bf..eb0293bf 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-api.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service index a1bc11ee..a1bc11ee 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-central.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service index dafc3ac7..dafc3ac7 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-collector.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service index 9fe8a1e6..9fe8a1e6 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-compute.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service index c3e809d7..c3e809d7 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-config-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service index 7a785227..7a785227 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-db-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service index 6696116e..6696116e 100644 --- a/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ceilometer-notification.service diff --git a/openstack/usr/lib/systemd/system/openstack-cinder-api.service b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-api.service index a284f31d..a284f31d 100644 --- a/openstack/usr/lib/systemd/system/openstack-cinder-api.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-api.service diff --git a/openstack/usr/lib/systemd/system/openstack-cinder-backup.service b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-backup.service index c14e13aa..c14e13aa 100644 --- a/openstack/usr/lib/systemd/system/openstack-cinder-backup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-backup.service diff --git a/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service index 1c966933..1c966933 100644 --- a/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-config-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service index a3c66d67..a3c66d67 100644 --- a/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-db-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service index 82e9b08d..82e9b08d 100644 --- a/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-lv-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service index f205aaff..f205aaff 100644 --- a/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-scheduler.service diff --git a/openstack/usr/lib/systemd/system/openstack-cinder-volume.service b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-volume.service index c56ee693..c56ee693 100644 --- a/openstack/usr/lib/systemd/system/openstack-cinder-volume.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-cinder-volume.service diff --git a/openstack/usr/lib/systemd/system/openstack-glance-api.service b/install-files/openstack/usr/lib/systemd/system/openstack-glance-api.service index 4c34ff10..4c34ff10 100644 --- a/openstack/usr/lib/systemd/system/openstack-glance-api.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-glance-api.service diff --git a/openstack/usr/lib/systemd/system/openstack-glance-registry.service b/install-files/openstack/usr/lib/systemd/system/openstack-glance-registry.service index d53c8b33..d53c8b33 100644 --- a/openstack/usr/lib/systemd/system/openstack-glance-registry.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-glance-registry.service diff --git a/openstack/usr/lib/systemd/system/openstack-glance-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-glance-setup.service index 43810797..43810797 100644 --- a/openstack/usr/lib/systemd/system/openstack-glance-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-glance-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-horizon-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-horizon-setup.service index 9ec3197a..9ec3197a 100644 --- a/openstack/usr/lib/systemd/system/openstack-horizon-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-horizon-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-ironic-api.service b/install-files/openstack/usr/lib/systemd/system/openstack-ironic-api.service index 5a286a95..5a286a95 100644 --- a/openstack/usr/lib/systemd/system/openstack-ironic-api.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ironic-api.service diff --git a/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service b/install-files/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service index b3b226e0..b3b226e0 100644 --- a/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ironic-conductor.service diff --git a/openstack/usr/lib/systemd/system/openstack-ironic-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-ironic-setup.service index e3a58eb5..e3a58eb5 100644 --- a/openstack/usr/lib/systemd/system/openstack-ironic-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-ironic-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-keystone-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-keystone-setup.service index db9d0b2b..db9d0b2b 100644 --- a/openstack/usr/lib/systemd/system/openstack-keystone-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-keystone-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-keystone.service b/install-files/openstack/usr/lib/systemd/system/openstack-keystone.service index 6f6ff644..6f6ff644 100644 --- a/openstack/usr/lib/systemd/system/openstack-keystone.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-keystone.service diff --git a/openstack/usr/lib/systemd/system/openstack-network-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-network-setup.service index 021370d9..021370d9 100644 --- a/openstack/usr/lib/systemd/system/openstack-network-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-network-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service index b74f44ab..b74f44ab 100644 --- a/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-config-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service index 5d07da2e..5d07da2e 100644 --- a/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-db-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service index 9080f3c1..9080f3c1 100644 --- a/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-dhcp-agent.service diff --git a/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service index 76efea5c..76efea5c 100644 --- a/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-l3-agent.service diff --git a/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service index 20540e4c..20540e4c 100644 --- a/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-metadata-agent.service diff --git a/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service index f5709028..f5709028 100644 --- a/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-ovs-cleanup.service diff --git a/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service index 6c579a62..6c579a62 100644 --- a/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-plugin-openvswitch-agent.service diff --git a/openstack/usr/lib/systemd/system/openstack-neutron-server.service b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-server.service index 6376c3d8..6376c3d8 100644 --- a/openstack/usr/lib/systemd/system/openstack-neutron-server.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-neutron-server.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-api.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-api.service index 521353db..521353db 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-api.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-api.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-cert.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-cert.service index b3733816..b3733816 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-cert.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-cert.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-compute.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-compute.service index 4f9b8196..4f9b8196 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-compute.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-compute.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-conductor.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-conductor.service index 4c0d7d43..4c0d7d43 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-conductor.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-conductor.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service index df669aa9..df669aa9 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-config-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service index e22780a9..e22780a9 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-consoleauth.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service index 8e004327..8e004327 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-db-setup.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service index 8cbb20fd..8cbb20fd 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-novncproxy.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service index e89f0d3e..e89f0d3e 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-scheduler.service diff --git a/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service b/install-files/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service index 30af8305..30af8305 100644 --- a/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service +++ b/install-files/openstack/usr/lib/systemd/system/openstack-nova-serialproxy.service diff --git a/openstack/usr/lib/systemd/system/openvswitch-db-server.service b/install-files/openstack/usr/lib/systemd/system/openvswitch-db-server.service index 34a7c812..34a7c812 100644 --- a/openstack/usr/lib/systemd/system/openvswitch-db-server.service +++ b/install-files/openstack/usr/lib/systemd/system/openvswitch-db-server.service diff --git a/openstack/usr/lib/systemd/system/openvswitch-setup.service b/install-files/openstack/usr/lib/systemd/system/openvswitch-setup.service index 8393ebbc..8393ebbc 100644 --- a/openstack/usr/lib/systemd/system/openvswitch-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/openvswitch-setup.service diff --git a/openstack/usr/lib/systemd/system/openvswitch.service b/install-files/openstack/usr/lib/systemd/system/openvswitch.service index 113911f6..113911f6 100644 --- a/openstack/usr/lib/systemd/system/openvswitch.service +++ b/install-files/openstack/usr/lib/systemd/system/openvswitch.service diff --git a/openstack/usr/lib/systemd/system/postgres-server-setup.service b/install-files/openstack/usr/lib/systemd/system/postgres-server-setup.service index 202c0636..202c0636 100644 --- a/openstack/usr/lib/systemd/system/postgres-server-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/postgres-server-setup.service diff --git a/openstack/usr/lib/systemd/system/postgres-server.service b/install-files/openstack/usr/lib/systemd/system/postgres-server.service index 9e11f26d..9e11f26d 100644 --- a/openstack/usr/lib/systemd/system/postgres-server.service +++ b/install-files/openstack/usr/lib/systemd/system/postgres-server.service diff --git a/openstack/usr/lib/systemd/system/rabbitmq-server.service b/install-files/openstack/usr/lib/systemd/system/rabbitmq-server.service index 1a20f3e4..1a20f3e4 100644 --- a/openstack/usr/lib/systemd/system/rabbitmq-server.service +++ b/install-files/openstack/usr/lib/systemd/system/rabbitmq-server.service diff --git a/openstack/usr/lib/systemd/system/swift-controller-setup.service b/install-files/openstack/usr/lib/systemd/system/swift-controller-setup.service index ccfbcbe6..ccfbcbe6 100644 --- a/openstack/usr/lib/systemd/system/swift-controller-setup.service +++ b/install-files/openstack/usr/lib/systemd/system/swift-controller-setup.service diff --git a/openstack/usr/lib/systemd/system/swift-proxy.service b/install-files/openstack/usr/lib/systemd/system/swift-proxy.service index 7b0a2e17..7b0a2e17 100644 --- a/openstack/usr/lib/systemd/system/swift-proxy.service +++ b/install-files/openstack/usr/lib/systemd/system/swift-proxy.service diff --git a/openstack/usr/share/openstack/ceilometer-config.yml b/install-files/openstack/usr/share/openstack/ceilometer-config.yml index 9850d84d..9850d84d 100644 --- a/openstack/usr/share/openstack/ceilometer-config.yml +++ b/install-files/openstack/usr/share/openstack/ceilometer-config.yml diff --git a/openstack/usr/share/openstack/ceilometer-db.yml b/install-files/openstack/usr/share/openstack/ceilometer-db.yml index 717c7d7d..717c7d7d 100644 --- a/openstack/usr/share/openstack/ceilometer-db.yml +++ b/install-files/openstack/usr/share/openstack/ceilometer-db.yml diff --git a/openstack/usr/share/openstack/ceilometer/ceilometer.conf b/install-files/openstack/usr/share/openstack/ceilometer/ceilometer.conf index b572d40f..b572d40f 100644 --- a/openstack/usr/share/openstack/ceilometer/ceilometer.conf +++ b/install-files/openstack/usr/share/openstack/ceilometer/ceilometer.conf diff --git a/openstack/usr/share/openstack/cinder-config.yml b/install-files/openstack/usr/share/openstack/cinder-config.yml index fd3e2cd0..fd3e2cd0 100644 --- a/openstack/usr/share/openstack/cinder-config.yml +++ b/install-files/openstack/usr/share/openstack/cinder-config.yml diff --git a/openstack/usr/share/openstack/cinder-db.yml b/install-files/openstack/usr/share/openstack/cinder-db.yml index 2a211720..2a211720 100644 --- a/openstack/usr/share/openstack/cinder-db.yml +++ b/install-files/openstack/usr/share/openstack/cinder-db.yml diff --git a/openstack/usr/share/openstack/cinder-lvs.yml b/install-files/openstack/usr/share/openstack/cinder-lvs.yml index 7a91a306..7a91a306 100644 --- a/openstack/usr/share/openstack/cinder-lvs.yml +++ b/install-files/openstack/usr/share/openstack/cinder-lvs.yml diff --git a/openstack/usr/share/openstack/cinder/api-paste.ini b/install-files/openstack/usr/share/openstack/cinder/api-paste.ini index ba922d5f..ba922d5f 100644 --- a/openstack/usr/share/openstack/cinder/api-paste.ini +++ b/install-files/openstack/usr/share/openstack/cinder/api-paste.ini diff --git a/openstack/usr/share/openstack/cinder/cinder.conf b/install-files/openstack/usr/share/openstack/cinder/cinder.conf index a58004b5..a58004b5 100644 --- a/openstack/usr/share/openstack/cinder/cinder.conf +++ b/install-files/openstack/usr/share/openstack/cinder/cinder.conf diff --git a/openstack/usr/share/openstack/cinder/policy.json b/install-files/openstack/usr/share/openstack/cinder/policy.json index 8f3a7b2f..8f3a7b2f 100644 --- a/openstack/usr/share/openstack/cinder/policy.json +++ b/install-files/openstack/usr/share/openstack/cinder/policy.json diff --git a/openstack/usr/share/openstack/extras/00-disable-device.network b/install-files/openstack/usr/share/openstack/extras/00-disable-device.network index 8e2532d0..8e2532d0 100644 --- a/openstack/usr/share/openstack/extras/00-disable-device.network +++ b/install-files/openstack/usr/share/openstack/extras/00-disable-device.network diff --git a/openstack/usr/share/openstack/extras/60-device-dhcp.network b/install-files/openstack/usr/share/openstack/extras/60-device-dhcp.network index 6fdbfd8d..6fdbfd8d 100644 --- a/openstack/usr/share/openstack/extras/60-device-dhcp.network +++ b/install-files/openstack/usr/share/openstack/extras/60-device-dhcp.network diff --git a/openstack/usr/share/openstack/glance.yml b/install-files/openstack/usr/share/openstack/glance.yml index aa7e4c78..aa7e4c78 100644 --- a/openstack/usr/share/openstack/glance.yml +++ b/install-files/openstack/usr/share/openstack/glance.yml diff --git a/openstack/usr/share/openstack/glance/glance-api-paste.ini b/install-files/openstack/usr/share/openstack/glance/glance-api-paste.ini index 86a4cdb1..86a4cdb1 100644 --- a/openstack/usr/share/openstack/glance/glance-api-paste.ini +++ b/install-files/openstack/usr/share/openstack/glance/glance-api-paste.ini diff --git a/openstack/usr/share/openstack/glance/glance-api.conf b/install-files/openstack/usr/share/openstack/glance/glance-api.conf index 39257a6d..39257a6d 100644 --- a/openstack/usr/share/openstack/glance/glance-api.conf +++ b/install-files/openstack/usr/share/openstack/glance/glance-api.conf diff --git a/openstack/usr/share/openstack/glance/glance-cache.conf b/install-files/openstack/usr/share/openstack/glance/glance-cache.conf index 3f2d4603..3f2d4603 100644 --- a/openstack/usr/share/openstack/glance/glance-cache.conf +++ b/install-files/openstack/usr/share/openstack/glance/glance-cache.conf diff --git a/openstack/usr/share/openstack/glance/glance-registry-paste.ini b/install-files/openstack/usr/share/openstack/glance/glance-registry-paste.ini index df403f6e..df403f6e 100644 --- a/openstack/usr/share/openstack/glance/glance-registry-paste.ini +++ b/install-files/openstack/usr/share/openstack/glance/glance-registry-paste.ini diff --git a/openstack/usr/share/openstack/glance/glance-registry.conf b/install-files/openstack/usr/share/openstack/glance/glance-registry.conf index 302f4138..302f4138 100644 --- a/openstack/usr/share/openstack/glance/glance-registry.conf +++ b/install-files/openstack/usr/share/openstack/glance/glance-registry.conf diff --git a/openstack/usr/share/openstack/glance/glance-scrubber.conf b/install-files/openstack/usr/share/openstack/glance/glance-scrubber.conf index cdbfda71..cdbfda71 100644 --- a/openstack/usr/share/openstack/glance/glance-scrubber.conf +++ b/install-files/openstack/usr/share/openstack/glance/glance-scrubber.conf diff --git a/openstack/usr/share/openstack/glance/logging.conf b/install-files/openstack/usr/share/openstack/glance/logging.conf index 7e7f31f0..7e7f31f0 100644 --- a/openstack/usr/share/openstack/glance/logging.conf +++ b/install-files/openstack/usr/share/openstack/glance/logging.conf diff --git a/openstack/usr/share/openstack/glance/policy.json b/install-files/openstack/usr/share/openstack/glance/policy.json index 325f00b2..325f00b2 100644 --- a/openstack/usr/share/openstack/glance/policy.json +++ b/install-files/openstack/usr/share/openstack/glance/policy.json diff --git a/openstack/usr/share/openstack/glance/schema-image.json b/install-files/openstack/usr/share/openstack/glance/schema-image.json index 5aafd6b3..5aafd6b3 100644 --- a/openstack/usr/share/openstack/glance/schema-image.json +++ b/install-files/openstack/usr/share/openstack/glance/schema-image.json diff --git a/openstack/usr/share/openstack/horizon.yml b/install-files/openstack/usr/share/openstack/horizon.yml index 14cea5c5..14cea5c5 100644 --- a/openstack/usr/share/openstack/horizon.yml +++ b/install-files/openstack/usr/share/openstack/horizon.yml diff --git a/openstack/usr/share/openstack/hosts b/install-files/openstack/usr/share/openstack/hosts index 5b97818d..5b97818d 100644 --- a/openstack/usr/share/openstack/hosts +++ b/install-files/openstack/usr/share/openstack/hosts diff --git a/openstack/usr/share/openstack/ironic.yml b/install-files/openstack/usr/share/openstack/ironic.yml index db0a8aa8..db0a8aa8 100644 --- a/openstack/usr/share/openstack/ironic.yml +++ b/install-files/openstack/usr/share/openstack/ironic.yml diff --git a/openstack/usr/share/openstack/ironic/ironic.conf b/install-files/openstack/usr/share/openstack/ironic/ironic.conf index 75c62b8e..75c62b8e 100644 --- a/openstack/usr/share/openstack/ironic/ironic.conf +++ b/install-files/openstack/usr/share/openstack/ironic/ironic.conf diff --git a/openstack/usr/share/openstack/ironic/policy.json b/install-files/openstack/usr/share/openstack/ironic/policy.json index 94ac3a5b..94ac3a5b 100644 --- a/openstack/usr/share/openstack/ironic/policy.json +++ b/install-files/openstack/usr/share/openstack/ironic/policy.json diff --git a/openstack/usr/share/openstack/iscsi.yml b/install-files/openstack/usr/share/openstack/iscsi.yml index b80377ae..b80377ae 100644 --- a/openstack/usr/share/openstack/iscsi.yml +++ b/install-files/openstack/usr/share/openstack/iscsi.yml diff --git a/openstack/usr/share/openstack/keystone.yml b/install-files/openstack/usr/share/openstack/keystone.yml index 330d74d0..330d74d0 100644 --- a/openstack/usr/share/openstack/keystone.yml +++ b/install-files/openstack/usr/share/openstack/keystone.yml diff --git a/openstack/usr/share/openstack/keystone/keystone-paste.ini b/install-files/openstack/usr/share/openstack/keystone/keystone-paste.ini index 46f994c3..46f994c3 100644 --- a/openstack/usr/share/openstack/keystone/keystone-paste.ini +++ b/install-files/openstack/usr/share/openstack/keystone/keystone-paste.ini diff --git a/openstack/usr/share/openstack/keystone/keystone.conf b/install-files/openstack/usr/share/openstack/keystone/keystone.conf index 4e04c81b..4e04c81b 100644 --- a/openstack/usr/share/openstack/keystone/keystone.conf +++ b/install-files/openstack/usr/share/openstack/keystone/keystone.conf diff --git a/openstack/usr/share/openstack/keystone/logging.conf b/install-files/openstack/usr/share/openstack/keystone/logging.conf index 6cb8c425..6cb8c425 100644 --- a/openstack/usr/share/openstack/keystone/logging.conf +++ b/install-files/openstack/usr/share/openstack/keystone/logging.conf diff --git a/openstack/usr/share/openstack/keystone/policy.json b/install-files/openstack/usr/share/openstack/keystone/policy.json index af65205e..af65205e 100644 --- a/openstack/usr/share/openstack/keystone/policy.json +++ b/install-files/openstack/usr/share/openstack/keystone/policy.json diff --git a/openstack/usr/share/openstack/network.yml b/install-files/openstack/usr/share/openstack/network.yml index f99f7f1a..f99f7f1a 100644 --- a/openstack/usr/share/openstack/network.yml +++ b/install-files/openstack/usr/share/openstack/network.yml diff --git a/openstack/usr/share/openstack/neutron-config.yml b/install-files/openstack/usr/share/openstack/neutron-config.yml index 97f4c76e..97f4c76e 100644 --- a/openstack/usr/share/openstack/neutron-config.yml +++ b/install-files/openstack/usr/share/openstack/neutron-config.yml diff --git a/openstack/usr/share/openstack/neutron-db.yml b/install-files/openstack/usr/share/openstack/neutron-db.yml index 91dde6fe..91dde6fe 100644 --- a/openstack/usr/share/openstack/neutron-db.yml +++ b/install-files/openstack/usr/share/openstack/neutron-db.yml diff --git a/openstack/usr/share/openstack/neutron/api-paste.ini b/install-files/openstack/usr/share/openstack/neutron/api-paste.ini index bbcd4152..bbcd4152 100644 --- a/openstack/usr/share/openstack/neutron/api-paste.ini +++ b/install-files/openstack/usr/share/openstack/neutron/api-paste.ini diff --git a/openstack/usr/share/openstack/neutron/dhcp_agent.ini b/install-files/openstack/usr/share/openstack/neutron/dhcp_agent.ini index c6c2b9a7..c6c2b9a7 100644 --- a/openstack/usr/share/openstack/neutron/dhcp_agent.ini +++ b/install-files/openstack/usr/share/openstack/neutron/dhcp_agent.ini diff --git a/openstack/usr/share/openstack/neutron/fwaas_driver.ini b/install-files/openstack/usr/share/openstack/neutron/fwaas_driver.ini index 41f761ab..41f761ab 100644 --- a/openstack/usr/share/openstack/neutron/fwaas_driver.ini +++ b/install-files/openstack/usr/share/openstack/neutron/fwaas_driver.ini diff --git a/openstack/usr/share/openstack/neutron/l3_agent.ini b/install-files/openstack/usr/share/openstack/neutron/l3_agent.ini index 000cd997..000cd997 100644 --- a/openstack/usr/share/openstack/neutron/l3_agent.ini +++ b/install-files/openstack/usr/share/openstack/neutron/l3_agent.ini diff --git a/openstack/usr/share/openstack/neutron/lbaas_agent.ini b/install-files/openstack/usr/share/openstack/neutron/lbaas_agent.ini index 68a2759e..68a2759e 100644 --- a/openstack/usr/share/openstack/neutron/lbaas_agent.ini +++ b/install-files/openstack/usr/share/openstack/neutron/lbaas_agent.ini diff --git a/openstack/usr/share/openstack/neutron/metadata_agent.ini b/install-files/openstack/usr/share/openstack/neutron/metadata_agent.ini index ed238770..ed238770 100644 --- a/openstack/usr/share/openstack/neutron/metadata_agent.ini +++ b/install-files/openstack/usr/share/openstack/neutron/metadata_agent.ini diff --git a/openstack/usr/share/openstack/neutron/metering_agent.ini b/install-files/openstack/usr/share/openstack/neutron/metering_agent.ini index 88826ce7..88826ce7 100644 --- a/openstack/usr/share/openstack/neutron/metering_agent.ini +++ b/install-files/openstack/usr/share/openstack/neutron/metering_agent.ini diff --git a/openstack/usr/share/openstack/neutron/neutron.conf b/install-files/openstack/usr/share/openstack/neutron/neutron.conf index 51de7464..51de7464 100644 --- a/openstack/usr/share/openstack/neutron/neutron.conf +++ b/install-files/openstack/usr/share/openstack/neutron/neutron.conf diff --git a/openstack/usr/share/openstack/neutron/plugins/bigswitch/restproxy.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/restproxy.ini index 256f7855..256f7855 100644 --- a/openstack/usr/share/openstack/neutron/plugins/bigswitch/restproxy.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/restproxy.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/ca_certs/README b/install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/ca_certs/README index e7e47a27..e7e47a27 100644 --- a/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/ca_certs/README +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/ca_certs/README diff --git a/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/host_certs/README b/install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/host_certs/README index 8f5f5e77..8f5f5e77 100644 --- a/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/host_certs/README +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/bigswitch/ssl/host_certs/README diff --git a/openstack/usr/share/openstack/neutron/plugins/brocade/brocade.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/brocade/brocade.ini index 916e9e5d..916e9e5d 100644 --- a/openstack/usr/share/openstack/neutron/plugins/brocade/brocade.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/brocade/brocade.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_cfg_agent.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_cfg_agent.ini index d99e8382..d99e8382 100644 --- a/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_cfg_agent.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_cfg_agent.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_plugins.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_plugins.ini index 17eae737..17eae737 100644 --- a/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_plugins.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_plugins.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_router_plugin.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_router_plugin.ini index 3ef271d2..3ef271d2 100644 --- a/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_router_plugin.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_router_plugin.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_vpn_agent.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_vpn_agent.ini index 0aee17eb..0aee17eb 100644 --- a/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_vpn_agent.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/cisco/cisco_vpn_agent.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/embrane/heleos_conf.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/embrane/heleos_conf.ini index 0ca9b46f..0ca9b46f 100644 --- a/openstack/usr/share/openstack/neutron/plugins/embrane/heleos_conf.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/embrane/heleos_conf.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/hyperv/hyperv_neutron_plugin.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/hyperv/hyperv_neutron_plugin.ini index 5eeec570..5eeec570 100644 --- a/openstack/usr/share/openstack/neutron/plugins/hyperv/hyperv_neutron_plugin.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/hyperv/hyperv_neutron_plugin.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ibm/sdnve_neutron_plugin.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ibm/sdnve_neutron_plugin.ini index 0fab5070..0fab5070 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ibm/sdnve_neutron_plugin.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ibm/sdnve_neutron_plugin.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/linuxbridge/linuxbridge_conf.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/linuxbridge/linuxbridge_conf.ini index 94fe9803..94fe9803 100644 --- a/openstack/usr/share/openstack/neutron/plugins/linuxbridge/linuxbridge_conf.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/linuxbridge/linuxbridge_conf.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/metaplugin/metaplugin.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/metaplugin/metaplugin.ini index 2b9bfa5e..2b9bfa5e 100644 --- a/openstack/usr/share/openstack/neutron/plugins/metaplugin/metaplugin.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/metaplugin/metaplugin.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/midonet/midonet.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/midonet/midonet.ini index f2e94052..f2e94052 100644 --- a/openstack/usr/share/openstack/neutron/plugins/midonet/midonet.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/midonet/midonet.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini index b8097ce2..b8097ce2 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_arista.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_arista.ini index abaf5bc7..abaf5bc7 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_arista.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_arista.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_brocade.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_brocade.ini index 67574110..67574110 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_brocade.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_brocade.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_cisco.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_cisco.ini index 1b69100e..1b69100e 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_cisco.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_cisco.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_fslsdn.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_fslsdn.ini index 6ee4a4e0..6ee4a4e0 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_fslsdn.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_fslsdn.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_mlnx.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_mlnx.ini index 46139aed..46139aed 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_mlnx.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_mlnx.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ncs.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ncs.ini index dbbfcbd2..dbbfcbd2 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ncs.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ncs.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_odl.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_odl.ini index 9e88c1bb..9e88c1bb 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_odl.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_odl.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ofa.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ofa.ini index 4a94b987..4a94b987 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ofa.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_ofa.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_sriov.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_sriov.ini index 9566f54c..9566f54c 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_sriov.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ml2/ml2_conf_sriov.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/mlnx/mlnx_conf.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/mlnx/mlnx_conf.ini index b1225111..b1225111 100644 --- a/openstack/usr/share/openstack/neutron/plugins/mlnx/mlnx_conf.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/mlnx/mlnx_conf.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/nec/nec.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/nec/nec.ini index aa4171da..aa4171da 100644 --- a/openstack/usr/share/openstack/neutron/plugins/nec/nec.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/nec/nec.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/nuage/nuage_plugin.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/nuage/nuage_plugin.ini index aad37bd5..aad37bd5 100644 --- a/openstack/usr/share/openstack/neutron/plugins/nuage/nuage_plugin.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/nuage/nuage_plugin.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/oneconvergence/nvsdplugin.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/oneconvergence/nvsdplugin.ini index a1c05d97..a1c05d97 100644 --- a/openstack/usr/share/openstack/neutron/plugins/oneconvergence/nvsdplugin.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/oneconvergence/nvsdplugin.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/opencontrail/contrailplugin.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/opencontrail/contrailplugin.ini index 629f1fc4..629f1fc4 100644 --- a/openstack/usr/share/openstack/neutron/plugins/opencontrail/contrailplugin.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/opencontrail/contrailplugin.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/openvswitch/ovs_neutron_plugin.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/openvswitch/ovs_neutron_plugin.ini index 9c8e6b58..9c8e6b58 100644 --- a/openstack/usr/share/openstack/neutron/plugins/openvswitch/ovs_neutron_plugin.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/openvswitch/ovs_neutron_plugin.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/plumgrid/plumgrid.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/plumgrid/plumgrid.ini index bfe8062a..bfe8062a 100644 --- a/openstack/usr/share/openstack/neutron/plugins/plumgrid/plumgrid.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/plumgrid/plumgrid.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini index 9d9cfa25..9d9cfa25 100644 --- a/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/ryu/ryu.ini diff --git a/openstack/usr/share/openstack/neutron/plugins/vmware/nsx.ini b/install-files/openstack/usr/share/openstack/neutron/plugins/vmware/nsx.ini index baca73b8..baca73b8 100644 --- a/openstack/usr/share/openstack/neutron/plugins/vmware/nsx.ini +++ b/install-files/openstack/usr/share/openstack/neutron/plugins/vmware/nsx.ini diff --git a/openstack/usr/share/openstack/neutron/policy.json b/install-files/openstack/usr/share/openstack/neutron/policy.json index e7db4357..e7db4357 100644 --- a/openstack/usr/share/openstack/neutron/policy.json +++ b/install-files/openstack/usr/share/openstack/neutron/policy.json diff --git a/openstack/usr/share/openstack/neutron/vpn_agent.ini b/install-files/openstack/usr/share/openstack/neutron/vpn_agent.ini index c3089df9..c3089df9 100644 --- a/openstack/usr/share/openstack/neutron/vpn_agent.ini +++ b/install-files/openstack/usr/share/openstack/neutron/vpn_agent.ini diff --git a/openstack/usr/share/openstack/nova-config.yml b/install-files/openstack/usr/share/openstack/nova-config.yml index 4f43db39..4f43db39 100644 --- a/openstack/usr/share/openstack/nova-config.yml +++ b/install-files/openstack/usr/share/openstack/nova-config.yml diff --git a/openstack/usr/share/openstack/nova-db.yml b/install-files/openstack/usr/share/openstack/nova-db.yml index e7dc5b10..e7dc5b10 100644 --- a/openstack/usr/share/openstack/nova-db.yml +++ b/install-files/openstack/usr/share/openstack/nova-db.yml diff --git a/openstack/usr/share/openstack/nova/api-paste.ini b/install-files/openstack/usr/share/openstack/nova/api-paste.ini index 2a825a5b..2a825a5b 100644 --- a/openstack/usr/share/openstack/nova/api-paste.ini +++ b/install-files/openstack/usr/share/openstack/nova/api-paste.ini diff --git a/openstack/usr/share/openstack/nova/cells.json b/install-files/openstack/usr/share/openstack/nova/cells.json index cc74930d..cc74930d 100644 --- a/openstack/usr/share/openstack/nova/cells.json +++ b/install-files/openstack/usr/share/openstack/nova/cells.json diff --git a/openstack/usr/share/openstack/nova/logging.conf b/install-files/openstack/usr/share/openstack/nova/logging.conf index 5482a040..5482a040 100644 --- a/openstack/usr/share/openstack/nova/logging.conf +++ b/install-files/openstack/usr/share/openstack/nova/logging.conf diff --git a/openstack/usr/share/openstack/nova/nova-compute.conf b/install-files/openstack/usr/share/openstack/nova/nova-compute.conf index 8d186211..8d186211 100644 --- a/openstack/usr/share/openstack/nova/nova-compute.conf +++ b/install-files/openstack/usr/share/openstack/nova/nova-compute.conf diff --git a/openstack/usr/share/openstack/nova/nova.conf b/install-files/openstack/usr/share/openstack/nova/nova.conf index 43343cdd..43343cdd 100644 --- a/openstack/usr/share/openstack/nova/nova.conf +++ b/install-files/openstack/usr/share/openstack/nova/nova.conf diff --git a/openstack/usr/share/openstack/nova/policy.json b/install-files/openstack/usr/share/openstack/nova/policy.json index cc5b8ea4..cc5b8ea4 100644 --- a/openstack/usr/share/openstack/nova/policy.json +++ b/install-files/openstack/usr/share/openstack/nova/policy.json diff --git a/openstack/usr/share/openstack/openvswitch.yml b/install-files/openstack/usr/share/openstack/openvswitch.yml index 47257f7f..47257f7f 100644 --- a/openstack/usr/share/openstack/openvswitch.yml +++ b/install-files/openstack/usr/share/openstack/openvswitch.yml diff --git a/openstack/usr/share/openstack/postgres.yml b/install-files/openstack/usr/share/openstack/postgres.yml index 5ff9355e..5ff9355e 100644 --- a/openstack/usr/share/openstack/postgres.yml +++ b/install-files/openstack/usr/share/openstack/postgres.yml diff --git a/openstack/usr/share/openstack/postgres/pg_hba.conf b/install-files/openstack/usr/share/openstack/postgres/pg_hba.conf index 78186924..78186924 100644 --- a/openstack/usr/share/openstack/postgres/pg_hba.conf +++ b/install-files/openstack/usr/share/openstack/postgres/pg_hba.conf diff --git a/openstack/usr/share/openstack/postgres/postgresql.conf b/install-files/openstack/usr/share/openstack/postgres/postgresql.conf index 74153385..74153385 100644 --- a/openstack/usr/share/openstack/postgres/postgresql.conf +++ b/install-files/openstack/usr/share/openstack/postgres/postgresql.conf diff --git a/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf b/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf index d4c58dae..d4c58dae 100644 --- a/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf +++ b/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq-env.conf diff --git a/openstack/usr/share/openstack/rabbitmq/rabbitmq.config b/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq.config index 9b93881e..9b93881e 100644 --- a/openstack/usr/share/openstack/rabbitmq/rabbitmq.config +++ b/install-files/openstack/usr/share/openstack/rabbitmq/rabbitmq.config diff --git a/openstack/usr/share/openstack/swift-controller.yml b/install-files/openstack/usr/share/openstack/swift-controller.yml index 690de087..690de087 100644 --- a/openstack/usr/share/openstack/swift-controller.yml +++ b/install-files/openstack/usr/share/openstack/swift-controller.yml diff --git a/openstack/usr/share/swift/etc/rsyncd.j2 b/install-files/openstack/usr/share/swift/etc/rsyncd.j2 index c0657665..c0657665 100644 --- a/openstack/usr/share/swift/etc/rsyncd.j2 +++ b/install-files/openstack/usr/share/swift/etc/rsyncd.j2 diff --git a/openstack/usr/share/swift/etc/swift/proxy-server.j2 b/install-files/openstack/usr/share/swift/etc/swift/proxy-server.j2 index dda82d5a..dda82d5a 100644 --- a/openstack/usr/share/swift/etc/swift/proxy-server.j2 +++ b/install-files/openstack/usr/share/swift/etc/swift/proxy-server.j2 diff --git a/swift/etc/ntp.conf b/install-files/swift/etc/ntp.conf index 54522871..54522871 100644 --- a/swift/etc/ntp.conf +++ b/install-files/swift/etc/ntp.conf diff --git a/swift/manifest b/install-files/swift/manifest index 7fd76206..7fd76206 100644 --- a/swift/manifest +++ b/install-files/swift/manifest diff --git a/swift/usr/lib/systemd/system/rsync.service b/install-files/swift/usr/lib/systemd/system/rsync.service index babcfb46..babcfb46 100644 --- a/swift/usr/lib/systemd/system/rsync.service +++ b/install-files/swift/usr/lib/systemd/system/rsync.service diff --git a/swift/usr/lib/systemd/system/swift-storage-setup.service b/install-files/swift/usr/lib/systemd/system/swift-storage-setup.service index 3df31163..3df31163 100644 --- a/swift/usr/lib/systemd/system/swift-storage-setup.service +++ b/install-files/swift/usr/lib/systemd/system/swift-storage-setup.service diff --git a/swift/usr/lib/systemd/system/swift-storage.service b/install-files/swift/usr/lib/systemd/system/swift-storage.service index dc41d3bc..dc41d3bc 100644 --- a/swift/usr/lib/systemd/system/swift-storage.service +++ b/install-files/swift/usr/lib/systemd/system/swift-storage.service diff --git a/swift/usr/share/swift/etc/rsyncd.j2 b/install-files/swift/usr/share/swift/etc/rsyncd.j2 index c0657665..c0657665 100644 --- a/swift/usr/share/swift/etc/rsyncd.j2 +++ b/install-files/swift/usr/share/swift/etc/rsyncd.j2 diff --git a/swift/usr/share/swift/etc/swift/account-server.j2 b/install-files/swift/usr/share/swift/etc/swift/account-server.j2 index d977e295..d977e295 100644 --- a/swift/usr/share/swift/etc/swift/account-server.j2 +++ b/install-files/swift/usr/share/swift/etc/swift/account-server.j2 diff --git a/swift/usr/share/swift/etc/swift/container-server.j2 b/install-files/swift/usr/share/swift/etc/swift/container-server.j2 index d226d016..d226d016 100644 --- a/swift/usr/share/swift/etc/swift/container-server.j2 +++ b/install-files/swift/usr/share/swift/etc/swift/container-server.j2 diff --git a/swift/usr/share/swift/etc/swift/object-server.j2 b/install-files/swift/usr/share/swift/etc/swift/object-server.j2 index 66990be9..66990be9 100644 --- a/swift/usr/share/swift/etc/swift/object-server.j2 +++ b/install-files/swift/usr/share/swift/etc/swift/object-server.j2 diff --git a/swift/usr/share/swift/etc/swift/swift.j2 b/install-files/swift/usr/share/swift/etc/swift/swift.j2 index 6d76215a..6d76215a 100644 --- a/swift/usr/share/swift/etc/swift/swift.j2 +++ b/install-files/swift/usr/share/swift/etc/swift/swift.j2 diff --git a/swift/usr/share/swift/hosts b/install-files/swift/usr/share/swift/hosts index 5b97818d..5b97818d 100644 --- a/swift/usr/share/swift/hosts +++ b/install-files/swift/usr/share/swift/hosts diff --git a/swift/usr/share/swift/swift-storage.yml b/install-files/swift/usr/share/swift/swift-storage.yml index 62a335ed..62a335ed 100644 --- a/swift/usr/share/swift/swift-storage.yml +++ b/install-files/swift/usr/share/swift/swift-storage.yml diff --git a/vagrant-files/home/vagrant/.ssh/authorized_keys b/install-files/vagrant-files/home/vagrant/.ssh/authorized_keys index 18a9c00f..18a9c00f 100644 --- a/vagrant-files/home/vagrant/.ssh/authorized_keys +++ b/install-files/vagrant-files/home/vagrant/.ssh/authorized_keys diff --git a/vagrant-files/manifest b/install-files/vagrant-files/manifest index 67168341..67168341 100644 --- a/vagrant-files/manifest +++ b/install-files/vagrant-files/manifest diff --git a/systems/armv7lhf-cross-toolchain-system-x86_32.morph b/systems/armv7lhf-cross-toolchain-system-x86_32.morph index 9fe7888a..b0ac9cfe 100644 --- a/systems/armv7lhf-cross-toolchain-system-x86_32.morph +++ b/systems/armv7lhf-cross-toolchain-system-x86_32.morph @@ -11,9 +11,9 @@ strata: - name: cross-tools morph: strata/cross-tools.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/armv7lhf-cross-toolchain-system-x86_64.morph b/systems/armv7lhf-cross-toolchain-system-x86_64.morph index c1de199c..1bd1adc1 100644 --- a/systems/armv7lhf-cross-toolchain-system-x86_64.morph +++ b/systems/armv7lhf-cross-toolchain-system-x86_64.morph @@ -11,9 +11,9 @@ strata: - name: cross-tools morph: strata/cross-tools.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/base-system-armv7-highbank.morph b/systems/base-system-armv7-highbank.morph index ffc5e188..32d773e8 100644 --- a/systems/base-system-armv7-highbank.morph +++ b/systems/base-system-armv7-highbank.morph @@ -13,8 +13,8 @@ strata: - name: bsp-armv7-highbank morph: strata/bsp-armv7-highbank.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/base-system-armv7-versatile.morph b/systems/base-system-armv7-versatile.morph index 8de2b35f..4f039c02 100644 --- a/systems/base-system-armv7-versatile.morph +++ b/systems/base-system-armv7-versatile.morph @@ -13,8 +13,8 @@ strata: - name: bsp-armv7-versatile morph: strata/bsp-armv7-versatile.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/base-system-armv7b-highbank.morph b/systems/base-system-armv7b-highbank.morph index 23bf4dbf..969967b5 100644 --- a/systems/base-system-armv7b-highbank.morph +++ b/systems/base-system-armv7b-highbank.morph @@ -13,8 +13,8 @@ strata: - name: bsp-armv7b-highbank morph: strata/bsp-armv7b-highbank.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/base-system-armv7b-vexpress-tc2.morph b/systems/base-system-armv7b-vexpress-tc2.morph index b06ead7b..cbfedd89 100644 --- a/systems/base-system-armv7b-vexpress-tc2.morph +++ b/systems/base-system-armv7b-vexpress-tc2.morph @@ -12,8 +12,8 @@ strata: - name: bsp-armv7b-vexpress-tc2 morph: strata/bsp-armv7b-vexpress-tc2.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/base-system-armv7lhf-highbank.morph b/systems/base-system-armv7lhf-highbank.morph index c827f3a2..399931a5 100644 --- a/systems/base-system-armv7lhf-highbank.morph +++ b/systems/base-system-armv7lhf-highbank.morph @@ -13,8 +13,8 @@ strata: - name: bsp-armv7-highbank morph: strata/bsp-armv7-highbank.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/base-system-armv8b64.morph b/systems/base-system-armv8b64.morph index 49e7dac7..d23bde9b 100644 --- a/systems/base-system-armv8b64.morph +++ b/systems/base-system-armv8b64.morph @@ -14,9 +14,9 @@ strata: - name: bsp-armv8b64-generic morph: strata/bsp-armv8b64-generic.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- moonshot-kernel -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/systems/base-system-armv8l64.morph b/systems/base-system-armv8l64.morph index 560add69..24104a8b 100644 --- a/systems/base-system-armv8l64.morph +++ b/systems/base-system-armv8l64.morph @@ -14,9 +14,9 @@ strata: - name: bsp-armv8l64-generic morph: strata/bsp-armv8l64-generic.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- moonshot-kernel -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/systems/base-system-ppc64-generic.morph b/systems/base-system-ppc64-generic.morph index 3763cce5..6da852e3 100644 --- a/systems/base-system-ppc64-generic.morph +++ b/systems/base-system-ppc64-generic.morph @@ -13,8 +13,8 @@ strata: - name: bsp-ppc64-generic morph: strata/bsp-ppc64-generic.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/base-system-x86_32-generic.morph b/systems/base-system-x86_32-generic.morph index 7ada4052..d89fd913 100644 --- a/systems/base-system-x86_32-generic.morph +++ b/systems/base-system-x86_32-generic.morph @@ -12,8 +12,8 @@ strata: - name: bsp-x86_32-generic morph: strata/bsp-x86_32-generic.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/base-system-x86_64-generic.morph b/systems/base-system-x86_64-generic.morph index 796c8185..aa1659b3 100644 --- a/systems/base-system-x86_64-generic.morph +++ b/systems/base-system-x86_64-generic.morph @@ -13,8 +13,8 @@ strata: - name: bsp-x86_64-generic morph: strata/bsp-x86_64-generic.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/build-system-armv5l-openbmc-aspeed.morph b/systems/build-system-armv5l-openbmc-aspeed.morph index 4eb0b6e7..7230bbc0 100644 --- a/systems/build-system-armv5l-openbmc-aspeed.morph +++ b/systems/build-system-armv5l-openbmc-aspeed.morph @@ -35,9 +35,9 @@ strata: - name: mtd-utilities morph: strata/mtd-utilities.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/build-system-armv7lhf-highbank.morph b/systems/build-system-armv7lhf-highbank.morph index d43ac935..42156d78 100644 --- a/systems/build-system-armv7lhf-highbank.morph +++ b/systems/build-system-armv7lhf-highbank.morph @@ -44,12 +44,12 @@ strata: - name: unionfs-fuse-group morph: strata/unionfs-fuse-group.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files diff --git a/systems/build-system-armv7lhf-jetson.morph b/systems/build-system-armv7lhf-jetson.morph index fa948037..3bdcf9f0 100644 --- a/systems/build-system-armv7lhf-jetson.morph +++ b/systems/build-system-armv7lhf-jetson.morph @@ -42,12 +42,12 @@ strata: - name: ostree-core morph: strata/ostree-core.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files diff --git a/systems/build-system-armv8b64.morph b/systems/build-system-armv8b64.morph index 84495016..aa16f545 100644 --- a/systems/build-system-armv8b64.morph +++ b/systems/build-system-armv8b64.morph @@ -45,13 +45,13 @@ strata: - name: devtools morph: strata/devtools.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- moonshot-kernel -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/systems/build-system-armv8l64.morph b/systems/build-system-armv8l64.morph index f79fb76e..e7ddf034 100644 --- a/systems/build-system-armv8l64.morph +++ b/systems/build-system-armv8l64.morph @@ -45,13 +45,13 @@ strata: - name: ostree-core morph: strata/ostree-core.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- moonshot-kernel -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/systems/build-system-ppc64.morph b/systems/build-system-ppc64.morph index 38f2e9f3..642df309 100644 --- a/systems/build-system-ppc64.morph +++ b/systems/build-system-ppc64.morph @@ -42,12 +42,12 @@ strata: - name: ostree-core morph: strata/ostree-core.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files diff --git a/systems/build-system-x86_32-chroot.morph b/systems/build-system-x86_32-chroot.morph index f193841f..646ae6a8 100644 --- a/systems/build-system-x86_32-chroot.morph +++ b/systems/build-system-x86_32-chroot.morph @@ -42,12 +42,12 @@ strata: - name: ostree-core morph: strata/ostree-core.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files diff --git a/systems/build-system-x86_32.morph b/systems/build-system-x86_32.morph index a802b64f..c14b54f2 100644 --- a/systems/build-system-x86_32.morph +++ b/systems/build-system-x86_32.morph @@ -44,12 +44,12 @@ strata: - name: ostree-core morph: strata/ostree-core.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files diff --git a/systems/build-system-x86_64-chroot.morph b/systems/build-system-x86_64-chroot.morph index fa54f9d3..82493d1e 100644 --- a/systems/build-system-x86_64-chroot.morph +++ b/systems/build-system-x86_64-chroot.morph @@ -42,12 +42,12 @@ strata: - name: ostree-core morph: strata/ostree-core.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files diff --git a/systems/build-system-x86_64.morph b/systems/build-system-x86_64.morph index 8fe5f91f..4b688555 100644 --- a/systems/build-system-x86_64.morph +++ b/systems/build-system-x86_64.morph @@ -44,12 +44,12 @@ strata: - name: ostree-core morph: strata/ostree-core.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- distbuild -- fstab -- mason -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/distbuild +- extensions/fstab +- extensions/mason +- extensions/cloud-init +- extensions/install-essential-files diff --git a/systems/ceph-service-x86_64-generic.morph b/systems/ceph-service-x86_64-generic.morph index 7431e56a..daaa6957 100644 --- a/systems/ceph-service-x86_64-generic.morph +++ b/systems/ceph-service-x86_64-generic.morph @@ -55,10 +55,10 @@ strata: - name: chef morph: strata/chef.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- ceph -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/ceph +- extensions/cloud-init +- extensions/install-essential-files diff --git a/chef-system-x86_64-container.morph b/systems/chef-system-x86_64-container.morph index 3e81c73e..889eabea 100644 --- a/chef-system-x86_64-container.morph +++ b/systems/chef-system-x86_64-container.morph @@ -3,12 +3,12 @@ kind: system arch: x86_64 description: Minimal chef system suitable for running in a container configuration-extensions: -- set-hostname -- simple-network -- nfsboot -- install-files -- busybox-init -- remove-gcc +- extensions/set-hostname +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/busybox-init +- extensions/remove-gcc strata: - name: build-essential morph: strata/build-essential.morph diff --git a/systems/cxmanage-system-x86_64-generic.morph b/systems/cxmanage-system-x86_64-generic.morph index aaa0fa81..ed7e8d63 100644 --- a/systems/cxmanage-system-x86_64-generic.morph +++ b/systems/cxmanage-system-x86_64-generic.morph @@ -16,9 +16,9 @@ strata: - name: cxmanage morph: strata/cxmanage.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7-chroot.morph b/systems/devel-system-armv7-chroot.morph index 620d8fb9..d7a06fe9 100644 --- a/systems/devel-system-armv7-chroot.morph +++ b/systems/devel-system-armv7-chroot.morph @@ -54,9 +54,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7-highbank.morph b/systems/devel-system-armv7-highbank.morph index a92561fe..854edd76 100644 --- a/systems/devel-system-armv7-highbank.morph +++ b/systems/devel-system-armv7-highbank.morph @@ -57,9 +57,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7-versatile.morph b/systems/devel-system-armv7-versatile.morph index 50588f66..34c9a239 100644 --- a/systems/devel-system-armv7-versatile.morph +++ b/systems/devel-system-armv7-versatile.morph @@ -55,9 +55,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7-wandboard.morph b/systems/devel-system-armv7-wandboard.morph index e2c9e175..300981f9 100644 --- a/systems/devel-system-armv7-wandboard.morph +++ b/systems/devel-system-armv7-wandboard.morph @@ -55,9 +55,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7b-chroot.morph b/systems/devel-system-armv7b-chroot.morph index 34bc04f1..4eed73e4 100644 --- a/systems/devel-system-armv7b-chroot.morph +++ b/systems/devel-system-armv7b-chroot.morph @@ -46,9 +46,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7b-highbank.morph b/systems/devel-system-armv7b-highbank.morph index cddd5ff4..ba5de00b 100644 --- a/systems/devel-system-armv7b-highbank.morph +++ b/systems/devel-system-armv7b-highbank.morph @@ -53,9 +53,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7lhf-chroot.morph b/systems/devel-system-armv7lhf-chroot.morph index a8d46bd1..d0917fcb 100644 --- a/systems/devel-system-armv7lhf-chroot.morph +++ b/systems/devel-system-armv7lhf-chroot.morph @@ -54,9 +54,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7lhf-highbank.morph b/systems/devel-system-armv7lhf-highbank.morph index 9722644c..189c2913 100644 --- a/systems/devel-system-armv7lhf-highbank.morph +++ b/systems/devel-system-armv7lhf-highbank.morph @@ -60,9 +60,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7lhf-jetson.morph b/systems/devel-system-armv7lhf-jetson.morph index e3d1843d..1c39b3ea 100644 --- a/systems/devel-system-armv7lhf-jetson.morph +++ b/systems/devel-system-armv7lhf-jetson.morph @@ -58,9 +58,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv7lhf-wandboard.morph b/systems/devel-system-armv7lhf-wandboard.morph index a47df980..4432f947 100644 --- a/systems/devel-system-armv7lhf-wandboard.morph +++ b/systems/devel-system-armv7lhf-wandboard.morph @@ -58,9 +58,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-armv8b64.morph b/systems/devel-system-armv8b64.morph index 6c5f23ee..44ff2d53 100644 --- a/systems/devel-system-armv8b64.morph +++ b/systems/devel-system-armv8b64.morph @@ -57,11 +57,11 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- cloud-init -- moonshot-kernel -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/systems/devel-system-armv8l64.morph b/systems/devel-system-armv8l64.morph index cd7a1e44..cad71c4e 100644 --- a/systems/devel-system-armv8l64.morph +++ b/systems/devel-system-armv8l64.morph @@ -57,12 +57,12 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- cloud-init -- moonshot-kernel -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/moonshot-kernel +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-ppc64-chroot.morph b/systems/devel-system-ppc64-chroot.morph index b92073a9..fe437767 100644 --- a/systems/devel-system-ppc64-chroot.morph +++ b/systems/devel-system-ppc64-chroot.morph @@ -52,9 +52,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-ppc64-generic.morph b/systems/devel-system-ppc64-generic.morph index 4d81ff5c..26776429 100644 --- a/systems/devel-system-ppc64-generic.morph +++ b/systems/devel-system-ppc64-generic.morph @@ -55,9 +55,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-x86_32-chroot.morph b/systems/devel-system-x86_32-chroot.morph index 7eb4fc01..bc3872a7 100644 --- a/systems/devel-system-x86_32-chroot.morph +++ b/systems/devel-system-x86_32-chroot.morph @@ -54,9 +54,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-x86_32-generic.morph b/systems/devel-system-x86_32-generic.morph index 1fd44086..952bff79 100644 --- a/systems/devel-system-x86_32-generic.morph +++ b/systems/devel-system-x86_32-generic.morph @@ -59,10 +59,10 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- cloud-init -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-x86_64-chroot.morph b/systems/devel-system-x86_64-chroot.morph index 48f23cd0..394201e0 100644 --- a/systems/devel-system-x86_64-chroot.morph +++ b/systems/devel-system-x86_64-chroot.morph @@ -56,9 +56,9 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-x86_64-generic.morph b/systems/devel-system-x86_64-generic.morph index b49964dd..fe56a5de 100644 --- a/systems/devel-system-x86_64-generic.morph +++ b/systems/devel-system-x86_64-generic.morph @@ -59,11 +59,11 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- cloud-init -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/devel-system-x86_64-vagrant.morph b/systems/devel-system-x86_64-vagrant.morph index c6a5f6fe..b8d4d2e7 100644 --- a/systems/devel-system-x86_64-vagrant.morph +++ b/systems/devel-system-x86_64-vagrant.morph @@ -57,10 +57,10 @@ strata: - name: coreutils-common morph: strata/coreutils-common.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- vagrant -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/vagrant +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/genivi-baseline-system-armv7lhf-jetson.morph b/systems/genivi-baseline-system-armv7lhf-jetson.morph index 9306426d..71247d39 100644 --- a/systems/genivi-baseline-system-armv7lhf-jetson.morph +++ b/systems/genivi-baseline-system-armv7lhf-jetson.morph @@ -38,10 +38,10 @@ strata: - name: weston-genivi morph: strata/weston-genivi.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- strip-gplv3 -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/strip-gplv3 +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/genivi-baseline-system-armv7lhf-versatile.morph b/systems/genivi-baseline-system-armv7lhf-versatile.morph index 698230bb..429ca2d8 100644 --- a/systems/genivi-baseline-system-armv7lhf-versatile.morph +++ b/systems/genivi-baseline-system-armv7lhf-versatile.morph @@ -36,10 +36,10 @@ strata: - name: weston-genivi morph: strata/weston-genivi.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- strip-gplv3 -- fstab -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/strip-gplv3 +- extensions/fstab +- extensions/install-essential-files diff --git a/systems/genivi-baseline-system-x86_64-generic.morph b/systems/genivi-baseline-system-x86_64-generic.morph index f04485bc..6048e078 100644 --- a/systems/genivi-baseline-system-x86_64-generic.morph +++ b/systems/genivi-baseline-system-x86_64-generic.morph @@ -40,9 +40,9 @@ strata: - name: weston-genivi morph: strata/weston-genivi.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- strip-gplv3 -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/strip-gplv3 +- extensions/install-essential-files diff --git a/systems/installer-system-armv8b64.morph b/systems/installer-system-armv8b64.morph index 726354c9..f1a83d6d 100644 --- a/systems/installer-system-armv8b64.morph +++ b/systems/installer-system-armv8b64.morph @@ -28,9 +28,9 @@ strata: - name: installer-utils morph: strata/installer-utils.morph configuration-extensions: -- set-hostname -- install-files -- fstab -- installer -- moonshot-kernel -- install-essential-files +- extensions/set-hostname +- extensions/install-files +- extensions/fstab +- extensions/installer +- extensions/moonshot-kernel +- extensions/install-essential-files diff --git a/systems/installer-system-x86_64.morph b/systems/installer-system-x86_64.morph index 3d0ced5d..e9c4cd94 100644 --- a/systems/installer-system-x86_64.morph +++ b/systems/installer-system-x86_64.morph @@ -28,8 +28,8 @@ strata: - name: installer-utils morph: strata/installer-utils.morph configuration-extensions: -- set-hostname -- install-files -- fstab -- installer -- install-essential-files +- extensions/set-hostname +- extensions/install-files +- extensions/fstab +- extensions/installer +- extensions/install-essential-files diff --git a/systems/minimal-system-armv5l-openbmc-aspeed.morph b/systems/minimal-system-armv5l-openbmc-aspeed.morph index fe596057..602e05c7 100644 --- a/systems/minimal-system-armv5l-openbmc-aspeed.morph +++ b/systems/minimal-system-armv5l-openbmc-aspeed.morph @@ -12,9 +12,9 @@ strata: artifacts: - bsp-armv5l-openbmc-aspeed-runtime configuration-extensions: -- set-hostname -- simple-network -- nfsboot -- install-files -- busybox-init -- install-essential-files +- extensions/set-hostname +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/busybox-init +- extensions/install-essential-files diff --git a/systems/minimal-system-x86_32-generic.morph b/systems/minimal-system-x86_32-generic.morph index 785a72a2..2e9f79c5 100644 --- a/systems/minimal-system-x86_32-generic.morph +++ b/systems/minimal-system-x86_32-generic.morph @@ -13,9 +13,9 @@ strata: artifacts: - bsp-x86_32-generic-runtime configuration-extensions: -- set-hostname -- simple-network -- nfsboot -- install-files -- busybox-init -- install-essential-files +- extensions/set-hostname +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/busybox-init +- extensions/install-essential-files diff --git a/systems/minimal-system-x86_64-generic.morph b/systems/minimal-system-x86_64-generic.morph index 9da22ec8..afd9460c 100644 --- a/systems/minimal-system-x86_64-generic.morph +++ b/systems/minimal-system-x86_64-generic.morph @@ -13,9 +13,9 @@ strata: artifacts: - bsp-x86_64-generic-runtime configuration-extensions: -- set-hostname -- simple-network -- nfsboot -- install-files -- busybox-init -- install-essential-files +- extensions/set-hostname +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/busybox-init +- extensions/install-essential-files diff --git a/systems/nodejs-system-x86_64.morph b/systems/nodejs-system-x86_64.morph index d5ebcf30..b758d5bd 100644 --- a/systems/nodejs-system-x86_64.morph +++ b/systems/nodejs-system-x86_64.morph @@ -15,8 +15,8 @@ strata: - name: nodejs morph: strata/nodejs.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/ocaml-system-x86_64.morph b/systems/ocaml-system-x86_64.morph index 1903e4d6..9ac35d6f 100644 --- a/systems/ocaml-system-x86_64.morph +++ b/systems/ocaml-system-x86_64.morph @@ -14,7 +14,7 @@ strata: - name: ocaml-language morph: strata/ocaml-language.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files diff --git a/systems/openstack-system-x86_64.morph b/systems/openstack-system-x86_64.morph index 8ab38bee..2f700e68 100644 --- a/systems/openstack-system-x86_64.morph +++ b/systems/openstack-system-x86_64.morph @@ -66,20 +66,20 @@ strata: - name: python-tools morph: strata/python-tools.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- cloud-init -- hosts -- openstack-keystone -- openstack-glance -- openstack-cinder -- openstack-nova -- openstack-network -- openstack-neutron -- openstack-ceilometer -- fstab -- openstack-ironic -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/cloud-init +- extensions/hosts +- extensions/openstack-keystone +- extensions/openstack-glance +- extensions/openstack-cinder +- extensions/openstack-nova +- extensions/openstack-network +- extensions/openstack-neutron +- extensions/openstack-ceilometer +- extensions/fstab +- extensions/openstack-ironic +- extensions/install-essential-files diff --git a/systems/qt4-devel-system-x86_64-generic.morph b/systems/qt4-devel-system-x86_64-generic.morph index 15b85f70..c7bad950 100644 --- a/systems/qt4-devel-system-x86_64-generic.morph +++ b/systems/qt4-devel-system-x86_64-generic.morph @@ -37,8 +37,8 @@ strata: - name: enlightenment morph: strata/enlightenment.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/qt5-devel-system-x86_64-generic.morph b/systems/qt5-devel-system-x86_64-generic.morph index 3cdce60c..a1f38e9e 100644 --- a/systems/qt5-devel-system-x86_64-generic.morph +++ b/systems/qt5-devel-system-x86_64-generic.morph @@ -39,8 +39,8 @@ strata: - name: enlightenment morph: strata/enlightenment.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/swift-system-x86_64.morph b/systems/swift-system-x86_64.morph index 81738558..c959b6f7 100644 --- a/systems/swift-system-x86_64.morph +++ b/systems/swift-system-x86_64.morph @@ -24,11 +24,11 @@ strata: - name: openstack-common morph: strata/openstack-common.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- fstab -- swift-storage -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/fstab +- extensions/swift-storage +- extensions/install-essential-files diff --git a/systems/trove-system-x86_64.morph b/systems/trove-system-x86_64.morph index 0a5692f5..efc66b5c 100644 --- a/systems/trove-system-x86_64.morph +++ b/systems/trove-system-x86_64.morph @@ -48,10 +48,10 @@ strata: - name: devtools morph: strata/devtools.morph configuration-extensions: -- set-hostname -- trove -- nfsboot-server -- fstab -- install-files -- cloud-init -- install-essential-files +- extensions/set-hostname +- extensions/trove +- extensions/nfsboot-server +- extensions/fstab +- extensions/install-files +- extensions/cloud-init +- extensions/install-essential-files diff --git a/systems/web-system-x86_64-generic.morph b/systems/web-system-x86_64-generic.morph index 0b6e84b1..3f477833 100644 --- a/systems/web-system-x86_64-generic.morph +++ b/systems/web-system-x86_64-generic.morph @@ -30,8 +30,8 @@ strata: - name: nodejs morph: strata/nodejs.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/weston-system-armv7lhf-jetson.morph b/systems/weston-system-armv7lhf-jetson.morph index ccb2c3ee..78ddc8b4 100644 --- a/systems/weston-system-armv7lhf-jetson.morph +++ b/systems/weston-system-armv7lhf-jetson.morph @@ -42,8 +42,8 @@ strata: - name: tools morph: strata/tools.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/weston-system-x86_64-generic.morph b/systems/weston-system-x86_64-generic.morph index 84f0bad0..d927dd58 100644 --- a/systems/weston-system-x86_64-generic.morph +++ b/systems/weston-system-x86_64-generic.morph @@ -42,8 +42,8 @@ strata: - name: tools morph: strata/tools.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/xfce-system.morph b/systems/xfce-system.morph index 643291d6..f87b0982 100644 --- a/systems/xfce-system.morph +++ b/systems/xfce-system.morph @@ -48,8 +48,8 @@ strata: - name: xfce morph: strata/xfce.morph configuration-extensions: -- set-hostname -- add-config-files -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/zookeeper-client-x86_64.morph b/systems/zookeeper-client-x86_64.morph index a9b01cd5..bc470df5 100644 --- a/systems/zookeeper-client-x86_64.morph +++ b/systems/zookeeper-client-x86_64.morph @@ -20,9 +20,9 @@ strata: - name: test-tools morph: strata/test-tools.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files diff --git a/systems/zookeeper-server-x86_64.morph b/systems/zookeeper-server-x86_64.morph index 987ba9e1..bc46d7b3 100644 --- a/systems/zookeeper-server-x86_64.morph +++ b/systems/zookeeper-server-x86_64.morph @@ -20,9 +20,9 @@ strata: - name: test-tools morph: strata/test-tools.morph configuration-extensions: -- set-hostname -- add-config-files -- simple-network -- nfsboot -- install-files -- install-essential-files +- extensions/set-hostname +- extensions/add-config-files +- extensions/simple-network +- extensions/nfsboot +- extensions/install-files +- extensions/install-essential-files |