diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-testcloud.spec | 1254 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 1256 insertions, 0 deletions
@@ -0,0 +1 @@ +/testcloud-0.8.2.tar.gz diff --git a/python-testcloud.spec b/python-testcloud.spec new file mode 100644 index 0000000..79251c7 --- /dev/null +++ b/python-testcloud.spec @@ -0,0 +1,1254 @@ +%global _empty_manifest_terminate_build 0 +Name: python-testcloud +Version: 0.8.2 +Release: 1 +Summary: A tool to download and boot cloud images locally, with an easy to use API. +License: GPLv2+ +URL: https://pagure.io/testcloud +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/93/1b/5eb5eaee9442fffef8f0699527c98ca16fc0f04f5a9c36551083f4271cc7/testcloud-0.8.2.tar.gz +BuildArch: noarch + +Requires: python3-Jinja2 +Requires: python3-libvirt-python +Requires: python3-requests + +%description +# testcloud + +**testcloud** is a small helper script to download and boot cloud/coreos images +locally. Testcloud supports wide range of distributions, namely Fedora, Fedora CoreOS, +CentOS, CentOS Stream, Red Hat Enterprise Linux, Debian and Ubuntu. + +**testcloud** can run either in system mode or in constrained user session mode, +which is usefull for running it eg. in unprivileged containers. + +## Installation + +The following procedure should only be used to install **testcloud** on +a production system. For developing purposes, you need a different kind +of installation which is described in the **Testcloud Development** +section below. + +To use **testcloud** on a production system: + +1. Install the **testcloud**. + + ``` + $ sudo dnf install testcloud + ``` + +2. Add yourself to the `testcloud group`. + + ``` + $ sudo usermod -a -G testcloud $USER + ``` + +3. Restart your user session to update the group privileges, or use + `su -` to get a login shell for that particular user where the group + settings will be updated. + + ``` + $ su -i $USER + ``` + +4. Now, you are ready to use **testcloud**. + +## Using testcloud + +### Creating a new instance + +To create a new instance, you will need to provide distribution and version you wish to use or the url of some cloud +image in the *qcow2* format. If you do not have an image location of +your own, you can use the image from the **Fedora Cloud** download pages +(<https://alt.fedoraproject.org/cloud/>). + +To create a new instance with the cloud image, run: + +``` +$ testcloud instance create <url for qcow2 image> or <distro:version> +``` + +Some examples how to create an instance with distribution:version shortcut: + +``` +# Latest Fedora Release +$ testcloud instance create fedora:latest +``` + +or, you can skip latest, which is the default value for version: +``` +# Latest Fedora Release +$ testcloud instance create fedora +``` + +``` +# Fedora Rawhide (latest Nightly Compose) +$ testcloud instance create fedora:rawhide +``` + +``` +# CentOS Stream 8 +$ testcloud instance create centos-stream:8 +``` + +``` +# Ubuntu Hirsute (21.04) +$ testcloud instance create ubuntu:hirsute +``` + +``` +# Debian 11 +$ testcloud instance create debian:11 +``` + +Supported distributions with shortcuts are: Fedora, CentOS, CentOS Stream, Ubuntu and Debian. For other distributions, you can provide link to basically any qcow2 image which has the cloud-init package included. + +Testcloud supports also Vagrant .box files, in a limited manner and currently only for CentOS. + +**testcloud** will download the *qcow2* image and save it in the +`/var/lib/testcloud/backingstores/<qcow2-filename>`. It will use this +image a backing store for the newly created instance in +`/var/tmp/instances/<instance-name>`. When the image has been already +downloaded, **testcloud** will use the previously download image to +create the instance. + +To create a new instance with the coreos image, run: + +``` +$ testcloud instance create fedora-coreos:<stream> or <url for qcow2 image> + +``` + +You will be able to see the instance using the `list` command. + +``` +$ testcloud instance list +``` + +Alternatively, the instances can also be viewed and manipulated using +the **virt-manager** tool. + +### Starting, stopping, and removing an instance + +Instances can be started and stopped using the `instance` interface of +the **testcloud**, too: + +1. List all instances to see the correct name of the instance: + + ``` + $ testcloud instance list + ``` + +2. Start the instance: + + ``` + $ testcloud instance start <instance-name> + ``` + +3. Stop the instance: + + ``` + $ testcloud instance stop <instance-name> + ``` + +4. Remove the instance: + + ``` + $ testcloud instance remove <instance-name> + ``` + +Removing the instance only succeeds when the appropriate instance has +been **stopped** before. However, you can use the `-f` option to force +removing the instance. + +### Other instance operations + +1. Reboot the instance: + + ``` + $ testcloud instance reboot <instance-name> + ``` + +2. Remove non-existing libvirt VMs from testcloud: + + ``` + $ testcloud instance clean + ``` + +### Logging into the instance + +When the cloud/coreos instance is created, **testcloud** will return its IP address +that you can use to access the running instance via `ssh`. The default *login +name* is `cloud-user` and the *password* is `passw0rd`. Testcloud will output info how you can connect to any of the Supported Distributions. + +``` +ssh cloud-user@<instance-IP> +``` + +The IP address of an instance is also shown when you list the instance +using the `testcloud instance list` command. You can also control the +instance using the **virt-manager** , **GNOME Boxes** or any other tool to manage libvirt VMs. + +### Available options to create an instance + +There are several options (all optional) that can be used to create a +new instance using **testcloud**. + +-c, \--connection QEMU_URI + +: You can specify uri to qemu you wish to use. For limited environments, you might wish to use *qemu:///session*. Remote connections other than *qemu:///session* and *qemu:///system* (like qemu+ssh,...) are known to be problematic. + +\--ram RAM + +: To set the amount of RAM that will be available to the virtual + machine (in MiB). + +\--vcpus VCPUS + +: To set the amount of VCPUS that will be available to the virtual + machine. + +\--no-graphic + +: This turns off the graphical display of the virtual machine. + +\--vnc + +: To open a VNC connection at the `:1` display of the instance. + +-n, \--name NAME + +: To specify a custom name for you instance. + +\--timeout TIMEOUT + +: A time (in seconds) to wait for boot to complete. Setting to 0 + (default) will disable this functionality. + +\--disksize DISKSIZE + +: To set the disk size of the virtual machine (in GiB) + +There are several additional options that can be used to create a +new Coreos instance using **testcloud**. + +\--bu_file BU_FILE + +: To provide a bu_file you want to use + +\--ign_file IGN_FILE + +: To provide an ign_file you want to use + +\--ssh_path + +: To provide ssh pubkey path + +### Configuration + +The default configuration should work for many people but those defaults +can be overridden through the use of a `settings.py` file containing the +values to use when overriding default settings. The example file in +`conf/settings-example.py` shows the possible configuration values which +can be changed. + +Note that in order for those new values to be picked up, the filename +must be `settings.py` and that file must live in one of the following +locations: + +* `conf/settings.py` in the git checkout +* `~/.config/testcloud/settings.py` +* `/etc/testcloud/settings.py` + +For example, if you wanted to set up an ssh accessible root account that +uses an ssh key as the authentification method, you could provide the +following to the `~/.config/testcloud/settings.py`: + +```yaml +USER_DATA = """#cloud-config +users: + - default + - name: root + password: %s + chpasswd: { expire: False } + ssh-authorized-keys: + - <my ssh pub key> +""" +``` + +## Testcloud Development + +To develop **testcloud**, you need to perform a more complicated process +to install all its dependencies, download the source code and perform a +set-up. + +To install **testcloud** for development purposes: + +### Prerequisites + +1. Install the dependencies for **testcloud**. + + ``` + $ sudo dnf install libvirt python3-libvirt libguestfs libguestfs-tools python3-requests python3-jinja2 + ``` + +2. Start **libvirtd**. + + ``` + $ sudo systemctl start libvirtd + ``` + +3. Add the `testcloud` group to the system. + + ``` + $ sudo groupadd testcloud + ``` + +4. Add a user into the `testcloud` group. + + ``` + $ sudo usermod -a -G testcloud $USER + ``` + +5. Log out of the system and log in again to update the group + information on your user or use a login shell on a different + terminal. + + ``` + $ su - $USER + ``` + +### Installation + +1. Clone the **testcloud** repository. + + ``` + $ git clone https://pagure.io/testcloud.git + ``` + +2. Create the application directories. + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud + ``` + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud/instances + ``` + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud/backingstores + ``` + +3. Change ownership on these directories to enable their use with + **testcloud**. + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud + ``` + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud/instances + ``` + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud/backingstores + ``` + +4. Copy the `.rules` file to the **polkit** rules. + + ``` + $ sudo cp conf/99-testcloud-nonroot-libvirt-access.rules /etc/polkit-1/rules.d/ + ``` + +### Running testcloud + +1. Navigate to your **testcloud** git repository. + + ``` + $ cd testcloud + ``` + +2. Execute the `run_testcloud.py` script to run the **testcloud**. You + can use any options as with the regular installation, for example: + + ``` + $ ./run_testcloud.py instance create ... + ``` + +3. Alternatively, you can use **pip** to install **testcloud** onto the + system and then use it like it has been installed normally. + + ``` + $ pip3 install -e . --user + ``` + +### Testing + +There is a small testsuite you can run with: + +``` +tox +``` + +This is a good place to contribute if you\'re looking to help out. + +### Issue Tracking and Roadmap + +Our project tracker is on the Fedora QA-devel +[Pagure](https://pagure.io/testcloud//) instance. + +### Credit + +Thanks to [Oddshocks](https://github.com/oddshocks) for the koji +downloader code :) + +### License + +This code is licensed GPLv2+. See the LICENSE file for details. + + +%package -n python3-testcloud +Summary: A tool to download and boot cloud images locally, with an easy to use API. +Provides: python-testcloud +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-testcloud +# testcloud + +**testcloud** is a small helper script to download and boot cloud/coreos images +locally. Testcloud supports wide range of distributions, namely Fedora, Fedora CoreOS, +CentOS, CentOS Stream, Red Hat Enterprise Linux, Debian and Ubuntu. + +**testcloud** can run either in system mode or in constrained user session mode, +which is usefull for running it eg. in unprivileged containers. + +## Installation + +The following procedure should only be used to install **testcloud** on +a production system. For developing purposes, you need a different kind +of installation which is described in the **Testcloud Development** +section below. + +To use **testcloud** on a production system: + +1. Install the **testcloud**. + + ``` + $ sudo dnf install testcloud + ``` + +2. Add yourself to the `testcloud group`. + + ``` + $ sudo usermod -a -G testcloud $USER + ``` + +3. Restart your user session to update the group privileges, or use + `su -` to get a login shell for that particular user where the group + settings will be updated. + + ``` + $ su -i $USER + ``` + +4. Now, you are ready to use **testcloud**. + +## Using testcloud + +### Creating a new instance + +To create a new instance, you will need to provide distribution and version you wish to use or the url of some cloud +image in the *qcow2* format. If you do not have an image location of +your own, you can use the image from the **Fedora Cloud** download pages +(<https://alt.fedoraproject.org/cloud/>). + +To create a new instance with the cloud image, run: + +``` +$ testcloud instance create <url for qcow2 image> or <distro:version> +``` + +Some examples how to create an instance with distribution:version shortcut: + +``` +# Latest Fedora Release +$ testcloud instance create fedora:latest +``` + +or, you can skip latest, which is the default value for version: +``` +# Latest Fedora Release +$ testcloud instance create fedora +``` + +``` +# Fedora Rawhide (latest Nightly Compose) +$ testcloud instance create fedora:rawhide +``` + +``` +# CentOS Stream 8 +$ testcloud instance create centos-stream:8 +``` + +``` +# Ubuntu Hirsute (21.04) +$ testcloud instance create ubuntu:hirsute +``` + +``` +# Debian 11 +$ testcloud instance create debian:11 +``` + +Supported distributions with shortcuts are: Fedora, CentOS, CentOS Stream, Ubuntu and Debian. For other distributions, you can provide link to basically any qcow2 image which has the cloud-init package included. + +Testcloud supports also Vagrant .box files, in a limited manner and currently only for CentOS. + +**testcloud** will download the *qcow2* image and save it in the +`/var/lib/testcloud/backingstores/<qcow2-filename>`. It will use this +image a backing store for the newly created instance in +`/var/tmp/instances/<instance-name>`. When the image has been already +downloaded, **testcloud** will use the previously download image to +create the instance. + +To create a new instance with the coreos image, run: + +``` +$ testcloud instance create fedora-coreos:<stream> or <url for qcow2 image> + +``` + +You will be able to see the instance using the `list` command. + +``` +$ testcloud instance list +``` + +Alternatively, the instances can also be viewed and manipulated using +the **virt-manager** tool. + +### Starting, stopping, and removing an instance + +Instances can be started and stopped using the `instance` interface of +the **testcloud**, too: + +1. List all instances to see the correct name of the instance: + + ``` + $ testcloud instance list + ``` + +2. Start the instance: + + ``` + $ testcloud instance start <instance-name> + ``` + +3. Stop the instance: + + ``` + $ testcloud instance stop <instance-name> + ``` + +4. Remove the instance: + + ``` + $ testcloud instance remove <instance-name> + ``` + +Removing the instance only succeeds when the appropriate instance has +been **stopped** before. However, you can use the `-f` option to force +removing the instance. + +### Other instance operations + +1. Reboot the instance: + + ``` + $ testcloud instance reboot <instance-name> + ``` + +2. Remove non-existing libvirt VMs from testcloud: + + ``` + $ testcloud instance clean + ``` + +### Logging into the instance + +When the cloud/coreos instance is created, **testcloud** will return its IP address +that you can use to access the running instance via `ssh`. The default *login +name* is `cloud-user` and the *password* is `passw0rd`. Testcloud will output info how you can connect to any of the Supported Distributions. + +``` +ssh cloud-user@<instance-IP> +``` + +The IP address of an instance is also shown when you list the instance +using the `testcloud instance list` command. You can also control the +instance using the **virt-manager** , **GNOME Boxes** or any other tool to manage libvirt VMs. + +### Available options to create an instance + +There are several options (all optional) that can be used to create a +new instance using **testcloud**. + +-c, \--connection QEMU_URI + +: You can specify uri to qemu you wish to use. For limited environments, you might wish to use *qemu:///session*. Remote connections other than *qemu:///session* and *qemu:///system* (like qemu+ssh,...) are known to be problematic. + +\--ram RAM + +: To set the amount of RAM that will be available to the virtual + machine (in MiB). + +\--vcpus VCPUS + +: To set the amount of VCPUS that will be available to the virtual + machine. + +\--no-graphic + +: This turns off the graphical display of the virtual machine. + +\--vnc + +: To open a VNC connection at the `:1` display of the instance. + +-n, \--name NAME + +: To specify a custom name for you instance. + +\--timeout TIMEOUT + +: A time (in seconds) to wait for boot to complete. Setting to 0 + (default) will disable this functionality. + +\--disksize DISKSIZE + +: To set the disk size of the virtual machine (in GiB) + +There are several additional options that can be used to create a +new Coreos instance using **testcloud**. + +\--bu_file BU_FILE + +: To provide a bu_file you want to use + +\--ign_file IGN_FILE + +: To provide an ign_file you want to use + +\--ssh_path + +: To provide ssh pubkey path + +### Configuration + +The default configuration should work for many people but those defaults +can be overridden through the use of a `settings.py` file containing the +values to use when overriding default settings. The example file in +`conf/settings-example.py` shows the possible configuration values which +can be changed. + +Note that in order for those new values to be picked up, the filename +must be `settings.py` and that file must live in one of the following +locations: + +* `conf/settings.py` in the git checkout +* `~/.config/testcloud/settings.py` +* `/etc/testcloud/settings.py` + +For example, if you wanted to set up an ssh accessible root account that +uses an ssh key as the authentification method, you could provide the +following to the `~/.config/testcloud/settings.py`: + +```yaml +USER_DATA = """#cloud-config +users: + - default + - name: root + password: %s + chpasswd: { expire: False } + ssh-authorized-keys: + - <my ssh pub key> +""" +``` + +## Testcloud Development + +To develop **testcloud**, you need to perform a more complicated process +to install all its dependencies, download the source code and perform a +set-up. + +To install **testcloud** for development purposes: + +### Prerequisites + +1. Install the dependencies for **testcloud**. + + ``` + $ sudo dnf install libvirt python3-libvirt libguestfs libguestfs-tools python3-requests python3-jinja2 + ``` + +2. Start **libvirtd**. + + ``` + $ sudo systemctl start libvirtd + ``` + +3. Add the `testcloud` group to the system. + + ``` + $ sudo groupadd testcloud + ``` + +4. Add a user into the `testcloud` group. + + ``` + $ sudo usermod -a -G testcloud $USER + ``` + +5. Log out of the system and log in again to update the group + information on your user or use a login shell on a different + terminal. + + ``` + $ su - $USER + ``` + +### Installation + +1. Clone the **testcloud** repository. + + ``` + $ git clone https://pagure.io/testcloud.git + ``` + +2. Create the application directories. + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud + ``` + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud/instances + ``` + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud/backingstores + ``` + +3. Change ownership on these directories to enable their use with + **testcloud**. + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud + ``` + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud/instances + ``` + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud/backingstores + ``` + +4. Copy the `.rules` file to the **polkit** rules. + + ``` + $ sudo cp conf/99-testcloud-nonroot-libvirt-access.rules /etc/polkit-1/rules.d/ + ``` + +### Running testcloud + +1. Navigate to your **testcloud** git repository. + + ``` + $ cd testcloud + ``` + +2. Execute the `run_testcloud.py` script to run the **testcloud**. You + can use any options as with the regular installation, for example: + + ``` + $ ./run_testcloud.py instance create ... + ``` + +3. Alternatively, you can use **pip** to install **testcloud** onto the + system and then use it like it has been installed normally. + + ``` + $ pip3 install -e . --user + ``` + +### Testing + +There is a small testsuite you can run with: + +``` +tox +``` + +This is a good place to contribute if you\'re looking to help out. + +### Issue Tracking and Roadmap + +Our project tracker is on the Fedora QA-devel +[Pagure](https://pagure.io/testcloud//) instance. + +### Credit + +Thanks to [Oddshocks](https://github.com/oddshocks) for the koji +downloader code :) + +### License + +This code is licensed GPLv2+. See the LICENSE file for details. + + +%package help +Summary: Development documents and examples for testcloud +Provides: python3-testcloud-doc +%description help +# testcloud + +**testcloud** is a small helper script to download and boot cloud/coreos images +locally. Testcloud supports wide range of distributions, namely Fedora, Fedora CoreOS, +CentOS, CentOS Stream, Red Hat Enterprise Linux, Debian and Ubuntu. + +**testcloud** can run either in system mode or in constrained user session mode, +which is usefull for running it eg. in unprivileged containers. + +## Installation + +The following procedure should only be used to install **testcloud** on +a production system. For developing purposes, you need a different kind +of installation which is described in the **Testcloud Development** +section below. + +To use **testcloud** on a production system: + +1. Install the **testcloud**. + + ``` + $ sudo dnf install testcloud + ``` + +2. Add yourself to the `testcloud group`. + + ``` + $ sudo usermod -a -G testcloud $USER + ``` + +3. Restart your user session to update the group privileges, or use + `su -` to get a login shell for that particular user where the group + settings will be updated. + + ``` + $ su -i $USER + ``` + +4. Now, you are ready to use **testcloud**. + +## Using testcloud + +### Creating a new instance + +To create a new instance, you will need to provide distribution and version you wish to use or the url of some cloud +image in the *qcow2* format. If you do not have an image location of +your own, you can use the image from the **Fedora Cloud** download pages +(<https://alt.fedoraproject.org/cloud/>). + +To create a new instance with the cloud image, run: + +``` +$ testcloud instance create <url for qcow2 image> or <distro:version> +``` + +Some examples how to create an instance with distribution:version shortcut: + +``` +# Latest Fedora Release +$ testcloud instance create fedora:latest +``` + +or, you can skip latest, which is the default value for version: +``` +# Latest Fedora Release +$ testcloud instance create fedora +``` + +``` +# Fedora Rawhide (latest Nightly Compose) +$ testcloud instance create fedora:rawhide +``` + +``` +# CentOS Stream 8 +$ testcloud instance create centos-stream:8 +``` + +``` +# Ubuntu Hirsute (21.04) +$ testcloud instance create ubuntu:hirsute +``` + +``` +# Debian 11 +$ testcloud instance create debian:11 +``` + +Supported distributions with shortcuts are: Fedora, CentOS, CentOS Stream, Ubuntu and Debian. For other distributions, you can provide link to basically any qcow2 image which has the cloud-init package included. + +Testcloud supports also Vagrant .box files, in a limited manner and currently only for CentOS. + +**testcloud** will download the *qcow2* image and save it in the +`/var/lib/testcloud/backingstores/<qcow2-filename>`. It will use this +image a backing store for the newly created instance in +`/var/tmp/instances/<instance-name>`. When the image has been already +downloaded, **testcloud** will use the previously download image to +create the instance. + +To create a new instance with the coreos image, run: + +``` +$ testcloud instance create fedora-coreos:<stream> or <url for qcow2 image> + +``` + +You will be able to see the instance using the `list` command. + +``` +$ testcloud instance list +``` + +Alternatively, the instances can also be viewed and manipulated using +the **virt-manager** tool. + +### Starting, stopping, and removing an instance + +Instances can be started and stopped using the `instance` interface of +the **testcloud**, too: + +1. List all instances to see the correct name of the instance: + + ``` + $ testcloud instance list + ``` + +2. Start the instance: + + ``` + $ testcloud instance start <instance-name> + ``` + +3. Stop the instance: + + ``` + $ testcloud instance stop <instance-name> + ``` + +4. Remove the instance: + + ``` + $ testcloud instance remove <instance-name> + ``` + +Removing the instance only succeeds when the appropriate instance has +been **stopped** before. However, you can use the `-f` option to force +removing the instance. + +### Other instance operations + +1. Reboot the instance: + + ``` + $ testcloud instance reboot <instance-name> + ``` + +2. Remove non-existing libvirt VMs from testcloud: + + ``` + $ testcloud instance clean + ``` + +### Logging into the instance + +When the cloud/coreos instance is created, **testcloud** will return its IP address +that you can use to access the running instance via `ssh`. The default *login +name* is `cloud-user` and the *password* is `passw0rd`. Testcloud will output info how you can connect to any of the Supported Distributions. + +``` +ssh cloud-user@<instance-IP> +``` + +The IP address of an instance is also shown when you list the instance +using the `testcloud instance list` command. You can also control the +instance using the **virt-manager** , **GNOME Boxes** or any other tool to manage libvirt VMs. + +### Available options to create an instance + +There are several options (all optional) that can be used to create a +new instance using **testcloud**. + +-c, \--connection QEMU_URI + +: You can specify uri to qemu you wish to use. For limited environments, you might wish to use *qemu:///session*. Remote connections other than *qemu:///session* and *qemu:///system* (like qemu+ssh,...) are known to be problematic. + +\--ram RAM + +: To set the amount of RAM that will be available to the virtual + machine (in MiB). + +\--vcpus VCPUS + +: To set the amount of VCPUS that will be available to the virtual + machine. + +\--no-graphic + +: This turns off the graphical display of the virtual machine. + +\--vnc + +: To open a VNC connection at the `:1` display of the instance. + +-n, \--name NAME + +: To specify a custom name for you instance. + +\--timeout TIMEOUT + +: A time (in seconds) to wait for boot to complete. Setting to 0 + (default) will disable this functionality. + +\--disksize DISKSIZE + +: To set the disk size of the virtual machine (in GiB) + +There are several additional options that can be used to create a +new Coreos instance using **testcloud**. + +\--bu_file BU_FILE + +: To provide a bu_file you want to use + +\--ign_file IGN_FILE + +: To provide an ign_file you want to use + +\--ssh_path + +: To provide ssh pubkey path + +### Configuration + +The default configuration should work for many people but those defaults +can be overridden through the use of a `settings.py` file containing the +values to use when overriding default settings. The example file in +`conf/settings-example.py` shows the possible configuration values which +can be changed. + +Note that in order for those new values to be picked up, the filename +must be `settings.py` and that file must live in one of the following +locations: + +* `conf/settings.py` in the git checkout +* `~/.config/testcloud/settings.py` +* `/etc/testcloud/settings.py` + +For example, if you wanted to set up an ssh accessible root account that +uses an ssh key as the authentification method, you could provide the +following to the `~/.config/testcloud/settings.py`: + +```yaml +USER_DATA = """#cloud-config +users: + - default + - name: root + password: %s + chpasswd: { expire: False } + ssh-authorized-keys: + - <my ssh pub key> +""" +``` + +## Testcloud Development + +To develop **testcloud**, you need to perform a more complicated process +to install all its dependencies, download the source code and perform a +set-up. + +To install **testcloud** for development purposes: + +### Prerequisites + +1. Install the dependencies for **testcloud**. + + ``` + $ sudo dnf install libvirt python3-libvirt libguestfs libguestfs-tools python3-requests python3-jinja2 + ``` + +2. Start **libvirtd**. + + ``` + $ sudo systemctl start libvirtd + ``` + +3. Add the `testcloud` group to the system. + + ``` + $ sudo groupadd testcloud + ``` + +4. Add a user into the `testcloud` group. + + ``` + $ sudo usermod -a -G testcloud $USER + ``` + +5. Log out of the system and log in again to update the group + information on your user or use a login shell on a different + terminal. + + ``` + $ su - $USER + ``` + +### Installation + +1. Clone the **testcloud** repository. + + ``` + $ git clone https://pagure.io/testcloud.git + ``` + +2. Create the application directories. + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud + ``` + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud/instances + ``` + + ``` + $ sudo mkdir -p -m 775 /var/lib/testcloud/backingstores + ``` + +3. Change ownership on these directories to enable their use with + **testcloud**. + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud + ``` + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud/instances + ``` + + ``` + $ sudo chown qemu:testcloud /var/lib/testcloud/backingstores + ``` + +4. Copy the `.rules` file to the **polkit** rules. + + ``` + $ sudo cp conf/99-testcloud-nonroot-libvirt-access.rules /etc/polkit-1/rules.d/ + ``` + +### Running testcloud + +1. Navigate to your **testcloud** git repository. + + ``` + $ cd testcloud + ``` + +2. Execute the `run_testcloud.py` script to run the **testcloud**. You + can use any options as with the regular installation, for example: + + ``` + $ ./run_testcloud.py instance create ... + ``` + +3. Alternatively, you can use **pip** to install **testcloud** onto the + system and then use it like it has been installed normally. + + ``` + $ pip3 install -e . --user + ``` + +### Testing + +There is a small testsuite you can run with: + +``` +tox +``` + +This is a good place to contribute if you\'re looking to help out. + +### Issue Tracking and Roadmap + +Our project tracker is on the Fedora QA-devel +[Pagure](https://pagure.io/testcloud//) instance. + +### Credit + +Thanks to [Oddshocks](https://github.com/oddshocks) for the koji +downloader code :) + +### License + +This code is licensed GPLv2+. See the LICENSE file for details. + + +%prep +%autosetup -n testcloud-0.8.2 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-testcloud -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Thu Mar 09 2023 Python_Bot <Python_Bot@openeuler.org> - 0.8.2-1 +- Package Spec generated @@ -0,0 +1 @@ +ee7090980f3d6e80140ff4243a1ae745 testcloud-0.8.2.tar.gz |