Automatic Update of Glance Images
=================================

This script automates the process of updating images of operating systems in OpenStack.

### Currently the supported OS are:

- CentOS 7
- Debian 9
- Fedora 28
- Fedora 29
- Ubuntu 16.04
- Ubuntu 18.04

Installation
------------

	$ sudo apt install python3 python3-dev python3-pip -y 
    $ pip3 install --upgrade pip
	$ pip3 install datetime shade tqdm python-openstackclient
	$ git clone https://git.garr.it/cloud/admin/update-images.git

Usage
-----

Source the `admin` credentials to gain access to `OpenStack` commands:

	$ source admin.rc

Execute the script

	$ python3 update-images.py

### Execution example

    $ python3 update-images.py
	Download...
	From: http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
	To:   downloads/centos7-1505262668.qcow2
	downloads/centos7-1505262668.qcow2: 100%|████| 855M/855M [05:08<00:00, 2.77MB/s]
	Download...
	From: https://cdimage.debian.org/cdimage/openstack/current-9/debian-9-openstack-amd64.qcow2
	To:   downloads/debian9-1507104230.qcow2
	downloads/debian9-1507104230.qcow2: 585MB [00:32, 18.0MB/s]
	Download...
	From: https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img
	To:   downloads/ubuntu-16.04-1505853444.qcow2
	downloads/ubuntu-16.04-1505853444.qcow2: 100%|████| 291M/291M [03:31<00:00, 1.37MB/s]

Images are now present in OpenStack Glance.
This script uploads all the images as 'Public', accessible by all users.

### Update simplestreams
After updating the images, update the simplestreams catalog:

    $ openstack object list simplestreams
    $ openstack object save simplestreams images/streams/v1/com.ubuntu.cloud-released-imagemetadata.json --file com.ubuntu.cloud-released-imagemetadata_backup.json
    $ openstack object save simplestreams images/streams/v1/index.json --file index_backup.json

	$ python3 generate-files-for-simplestream.py
    $ cd output/simplestreams
    $ ls -lh images/streams/v1/
    $ openstack object create simplestreams images/streams/v1/com.ubuntu.cloud-released-imagemetadata.json images/streams/v1/index.json


Pipeline
--------

1. Fetch from config.yaml the url
2. Download locally (in 'download' folder) the updated qcow2 of specified operating system
3. Upload the qcow2 image on glance using openstack-cli commands

Notes
-----

This script is tested on Ubuntu 16.04 x64