Hello community,
here is the log from the commit of package python3-ec2uploadimg for
openSUSE:Factory checked in at 2018-02-06 16:49:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-ec2uploadimg (Old)
and /work/SRC/openSUSE:Factory/.python3-ec2uploadimg.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-ec2uploadimg"
Tue Feb 6 16:49:30 2018 rev:3 rq:573155 version:6.0.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python3-ec2uploadimg/python3-ec2uploadimg.changes
2017-09-13 22:36:56.639782421 +0200
+++
/work/SRC/openSUSE:Factory/.python3-ec2uploadimg.new/python3-ec2uploadimg.changes
2018-02-06 16:49:31.987004432 +0100
@@ -1,0 +2,9 @@
+Mon Feb 5 21:14:21 UTC 2018 - [email protected]
+
+- Update to version 6.0.0
+ + Incompatible changes, additional constructor arguments
+ + Update to handle preparation of a given cloud account for
+ image uploading by creating temporary artifacts as needed
+ ~ This is in support of EC2 upload from OBS
+
+-------------------------------------------------------------------
Old:
----
ec2uploadimg-5.0.1.tar.bz2
New:
----
ec2uploadimg-6.0.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-ec2uploadimg.spec ++++++
--- /var/tmp/diff_new_pack.nqI13B/_old 2018-02-06 16:49:32.622974674 +0100
+++ /var/tmp/diff_new_pack.nqI13B/_new 2018-02-06 16:49:32.622974674 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python3-ec2uploadimg
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,18 +18,22 @@
%define upstream_name ec2uploadimg
Name: python3-ec2uploadimg
-Version: 5.0.1
+Version: 6.0.0
Release: 0
Summary: Upload an image to EC2
License: GPL-3.0+
Group: System/Management
Url: https://github.com/SUSE/Enceladus
Source0: %{upstream_name}-%{version}.tar.bz2
-Requires: python-ec2utilsbase < 4.0.0
-Requires: python-ec2utilsbase >= 3.0.0
Requires: python3
Requires: python3-boto3 >= 1.4.1
+Requires: python3-ec2utilsbase < 4.0.0
+Requires: python3-ec2utilsbase >= 3.1.0
Requires: python3-paramiko
+BuildRequires: python3-boto3 >= 1.4.1
+BuildRequires: python3-ec2utilsbase < 4.0.0
+BuildRequires: python3-ec2utilsbase >= 3.1.0
+BuildRequires: python3-paramiko
BuildRequires: python3-setuptools
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildArch: noarch
++++++ ec2uploadimg-5.0.1.tar.bz2 -> ec2uploadimg-6.0.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ec2uploadimg-5.0.1/Makefile
new/ec2uploadimg-6.0.0/Makefile
--- old/ec2uploadimg-5.0.1/Makefile 2017-09-12 16:51:20.472834548 +0200
+++ new/ec2uploadimg-6.0.0/Makefile 2018-02-05 22:13:08.964943447 +0100
@@ -12,6 +12,15 @@
$(error "Version mismatch, will not take any action")
endif
+clean:
+ @find . -name "*.pyc" | xargs rm -f
+ @find . -name "__pycache__" | xargs rm -rf
+ @find . -name "*.cache" | xargs rm -rf
+ @find . -name "*.egg-info" | xargs rm -rf
+
+pep8: clean
+ @pep8 -v --statistics lib/ec2utils/*
+
tar:
mkdir -p "$(NAME)-$(verSrc)"/man/man1
cp -r $(dirs) $(files) "$(NAME)-$(verSrc)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ec2uploadimg-5.0.1/ec2uploadimg
new/ec2uploadimg-6.0.0/ec2uploadimg
--- old/ec2uploadimg-5.0.1/ec2uploadimg 2017-09-12 16:51:20.472834548 +0200
+++ new/ec2uploadimg-6.0.0/ec2uploadimg 2018-02-05 22:13:08.980943110 +0100
@@ -26,6 +26,7 @@
import ec2utils.ec2utilsutils as utils
import ec2utils.ec2uploadimg as ec2upimg
from ec2utils.ec2UtilsExceptions import *
+from ec2utils.ec2setup import EC2Setup
# Set up command line argument parsing
argparse = argparse.ArgumentParser(description='Upload image to Amazon EC2')
@@ -155,6 +156,12 @@
metavar='AWS_SECURITY_GROUP_IDS'
)
argparse.add_argument(
+ '--session-token',
+ dest='sessionToken',
+ help='AWS session token, for use of temporary credentials (Optional)',
+ metavar='AWS_SESSION_TOKEN'
+)
+argparse.add_argument(
'--snaponly',
action='store_true',
default=False,
@@ -339,9 +346,9 @@
regions = args.regions.split(',')
if (
- len(regions) > 1
- and (args.amiID or args.akiID or args.runningID or args.vpcSubnetId)
-):
+ len(regions) > 1 and (args.amiID or args.akiID or args.runningID or
+ args.vpcSubnetId)
+ ):
print(
'Incompatible arguments: multiple regions specified',
file=sys.stderr
@@ -357,185 +364,204 @@
ami_id = args.amiID
running_id = args.runningID
for region in regions:
- if not ami_id and not running_id:
- try:
- ami_id = utils.get_from_config(args.accountName,
- config,
- region,
- 'ami',
- '--ec2-ami')
- except:
- print('Could not determine helper AMI-ID', file=sys.stderr)
- sys.exit(1)
- bootkernel = args.akiID
- if args.virtType == 'hvm':
- bootkernel = None
-
- if not bootkernel and args.virtType != 'hvm':
- if args.grub2:
- try:
- bootkernel = utils.get_from_config(args.accountName,
- config,
- region,
- 'g2_aki_x86_64',
- '--boot-kernel')
- except:
- print(
- 'Could not find bootkernel in config',
- file=sys.stderr
- )
- sys.exit(1)
- elif args.arch == 'x86_64':
+ try:
+ setup = EC2Setup(access_key, region, secret_key, args.sessionToken,
+ args.verbose)
+ if not ami_id and not running_id:
try:
- bootkernel = utils.get_from_config(args.accountName,
- config,
- region,
- 'aki_x86_64',
- '--boot-kernel')
+ ami_id = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'ami',
+ '--ec2-ami')
except:
- print(
- 'Could not find bootkernel in config',
- file=sys.stderr
- )
+ print('Could not determine helper AMI-ID', file=sys.stderr)
sys.exit(1)
- elif args.arch == 'i386':
- try:
- bootkernel = utils.get_from_config(args.accountName,
- config,
- region,
- 'aki_i386',
- '--boot-kernel')
- except:
+ bootkernel = args.akiID
+ if args.virtType == 'hvm':
+ bootkernel = None
+
+ if not bootkernel and args.virtType != 'hvm':
+ if args.grub2:
+ try:
+ bootkernel = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'g2_aki_x86_64',
+ '--boot-kernel')
+ except:
+ print(
+ 'Could not find bootkernel in config',
+ file=sys.stderr
+ )
+ sys.exit(1)
+ elif args.arch == 'x86_64':
+ try:
+ bootkernel = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'aki_x86_64',
+ '--boot-kernel')
+ except:
+ print(
+ 'Could not find bootkernel in config',
+ file=sys.stderr
+ )
+ sys.exit(1)
+ elif args.arch == 'i386':
+ try:
+ bootkernel = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'aki_i386',
+ '--boot-kernel')
+ except:
+ print(
+ 'Could not find bootkernel in config',
+ file=sys.stderr
+ )
+ sys.exit(1)
+ else:
print(
- 'Could not find bootkernel in config',
+ 'Could not reliably determine the ',
+ end=' ',
file=sys.stderr
)
+ print('bootkernel to use ', file=sys.stderr)
+ print('must specify bootkernel, ', end=' ',
file=sys.stderr)
+ print('arch (x86_64|i386) or hvm', file=sys.stderr)
sys.exit(1)
- else:
+
+ inst_type = args.instType
+ if not inst_type:
+ inst_type = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'instance_type',
+ '--type')
+
+ key_pair_name = args.sshName
+ ssh_private_key_file = args.privateKey
+ if (
+ not key_pair_name
+ and not ssh_private_key_file
+ and not args.accountName
+ ):
+ key_pair_name, ssh_private_key_file = \
+ setup.create_upload_key_pair()
+ if not key_pair_name:
+ key_pair_name = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'ssh_key_name',
+ '--ssh-key-pair')
+ if not key_pair_name:
+ print('Could not determine key pair name', file=sys.stderr)
+ sys.exit(1)
+
+ if not ssh_private_key_file:
+ ssh_private_key_file = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'ssh_private_key',
+
'--private-key-file')
+
+ if not ssh_private_key_file:
print(
- 'Could not reliably determine the ',
- end=' ',
+ 'Could not determine the private ssh key file',
file=sys.stderr
)
- print('bootkernel to use ', file=sys.stderr)
- print('must specify bootkernel, ', end=' ', file=sys.stderr)
- print('arch (x86_64|i386) or hvm', file=sys.stderr)
- sys.exit(1)
- inst_type = args.instType
- if not inst_type:
- inst_type = utils.get_from_config(args.accountName,
- config,
- region,
- 'instance_type',
- '--type')
-
- key_pair_name = args.sshName
- if not key_pair_name:
- key_pair_name = utils.get_from_config(args.accountName,
- config,
- region,
- 'ssh_key_name',
- '--ssh-key-pair')
- if not key_pair_name:
- print('Could not determine key pair name', file=sys.stderr)
- sys.exit(1)
-
- ssh_private_key_file = args.privateKey
- if not ssh_private_key_file:
- ssh_private_key_file = utils.get_from_config(args.accountName,
- config,
- region,
- 'ssh_private_key',
- '--private-key-file')
- if not ssh_private_key_file:
- print(
- 'Could not determine the private ssh key file',
- file=sys.stderr
- )
- sys.exit(1)
+ ssh_private_key_file = os.path.expanduser(ssh_private_key_file)
+
+ if not os.path.exists(ssh_private_key_file):
+ print(
+ (
+ 'SSH private key file "%s" does not exist'
+ % ssh_private_key_file
+ ),
+ file=sys.stderr
+ )
+ sys.exit(1)
- ssh_private_key_file = os.path.expanduser(ssh_private_key_file)
+ ssh_user = args.sshUser
+ if not ssh_user:
+ ssh_user = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'user',
+ '--user')
+ if not ssh_user:
+ print('Could not determin ssh user to use', file=sys.stderr)
+ sys.exit(1)
- if not os.path.exists(ssh_private_key_file):
- print(
- (
- 'SSH private key file "%s" does not exist'
- % ssh_private_key_file
- ),
- file=sys.stderr
+ vpc_subnet_id = args.vpcSubnetId
+ if not vpc_subnet_id and not args.accountName:
+ vpc_subnet_id = setup.create_vpc_subnet()
+ if not vpc_subnet_id and not (args.amiID or args.runningID):
+ # Depending on instance type an instance may possibly only
+ # launch inside a subnet. Look in the config for a subnet if
none
+ # is given and the AMI to use was not specified on the command
line
+ try:
+ vpc_subnet_id = utils.get_from_config(args.accountName,
+ config,
+ region,
+ 'subnet_id_%s' %
region,
+ '--vpc-subnet-id')
+ if args.verbose and vpc_subnet_id:
+ print('Using VPC subnet: %s' % vpc_subnet_id)
+ except:
+ if args.verbose:
+ msg = 'Not using a subnet-id, none given on the '
+ msg += 'command line and none found in config for '
+ msg += '"subnet_id_%s" value' % region
+ print(msg)
+
+ security_group_ids = args.securityGroupIds
+ if not security_group_ids:
+ security_group_ids = setup.create_security_group()
+
+ uploader = ec2upimg.EC2ImageUploader(
+ access_key=access_key,
+ backing_store=args.backingStore,
+ billing_codes=args.billingCodes,
+ bootkernel=bootkernel,
+ ena_support=args.ena,
+ image_arch=args.arch,
+ image_description=args.descript,
+ image_name=args.imgName,
+ image_virt_type=virtualization_type,
+ inst_user_name=ssh_user,
+ launch_ami=ami_id,
+ launch_inst_type=inst_type,
+ region=region,
+ root_volume_size=root_volume_size,
+ running_id=running_id,
+ secret_key=secret_key,
+ security_group_ids=security_group_ids,
+ session_token=args.sessionToken,
+ sriov_type=sriov_type,
+ ssh_key_pair_name=key_pair_name,
+ ssh_key_private_key_file=ssh_private_key_file,
+ ssh_timeout=args.sshTimeout,
+ use_grub2=args.grub2,
+ use_private_ip=args.usePrivateIP,
+ verbose=args.verbose,
+ vpc_subnet_id=vpc_subnet_id,
+ wait_count=args.waitCount
)
- sys.exit(1)
- ssh_user = args.sshUser
- if not ssh_user:
- ssh_user = utils.get_from_config(args.accountName,
- config,
- region,
- 'user',
- '--user')
- if not ssh_user:
- print('Could not determin ssh user to use', file=sys.stderr)
- sys.exit(1)
-
- vpc_subnet_id = args.vpcSubnetId
- if not vpc_subnet_id and not (args.amiID or args.runningID):
- # Depending on instance type an instance may possibly only
- # launch inside a subnet. Look in the config for a subnet if none
- # is given and the AMI to use was not specified on the command line
- try:
- vpc_subnet_id = utils.get_from_config(args.accountName,
- config,
- region,
- 'subnet_id_%s' % region,
- '--vpc-subnet-id')
- if args.verbose and vpc_subnet_id:
- print('Using VPC subnet: "%s"' % vpc_subnet_id)
- except:
- if args.verbose:
- msg = 'Not using a subnet-id, none given on the '
- msg += 'command line and none found in config for '
- msg += '"subnet_id_%s" value' % region
- print(msg)
-
- uploader = ec2upimg.EC2ImageUploader(
- access_key=access_key,
- backing_store=args.backingStore,
- billing_codes=args.billingCodes,
- bootkernel=bootkernel,
- ena_support=args.ena,
- image_arch=args.arch,
- image_description=args.descript,
- image_name=args.imgName,
- image_virt_type=virtualization_type,
- inst_user_name=ssh_user,
- launch_ami=ami_id,
- launch_inst_type=inst_type,
- root_volume_size=root_volume_size,
- running_id=running_id,
- secret_key=secret_key,
- security_group_ids=args.securityGroupIds,
- sriov_type=sriov_type,
- ssh_key_pair_name=key_pair_name,
- ssh_key_private_key_file=ssh_private_key_file,
- ssh_timeout=args.sshTimeout,
- use_grub2=args.grub2,
- use_private_ip=args.usePrivateIP,
- verbose=args.verbose,
- vpc_subnet_id=vpc_subnet_id,
- wait_count=args.waitCount
- )
-
- uploader.set_region(region)
- if args.snapOnly:
- snapshot = uploader.create_snapshot(args.source)
- print('Created snapshot: ', snapshot['SnapshotId'])
- elif args.rootSwapMethod:
- ami = uploader.create_image_use_root_swap(args.source)
- print('Created image: ', ami)
- else:
- ami = uploader.create_image(args.source)
- print('Created image: ', ami)
+ if args.snapOnly:
+ snapshot = uploader.create_snapshot(args.source)
+ print('Created snapshot: ', snapshot['SnapshotId'])
+ elif args.rootSwapMethod:
+ ami = uploader.create_image_use_root_swap(args.source)
+ print('Created image: ', ami)
+ else:
+ ami = uploader.create_image(args.source)
+ print('Created image: ', ami)
+ finally:
+ setup.clean_up()
except EC2UploadImgException as e:
print(format(e), file=sys.stderr)
sys.exit(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ec2uploadimg-5.0.1/lib/ec2utils/ec2uploadimg.py
new/ec2uploadimg-6.0.0/lib/ec2utils/ec2uploadimg.py
--- old/ec2uploadimg-5.0.1/lib/ec2utils/ec2uploadimg.py 2017-09-12
16:51:20.472834548 +0200
+++ new/ec2uploadimg-6.0.0/lib/ec2utils/ec2uploadimg.py 2018-02-05
22:13:08.944943869 +0100
@@ -18,13 +18,14 @@
import boto3
import os
import paramiko
+import string
import sys
import threading
import time
from ec2utils.ec2utils import EC2Utils
-from ec2utils.ec2UtilsExceptions import *
+from ec2utils.ec2UtilsExceptions import EC2UploadImgException
class EC2ImageUploader(EC2Utils):
@@ -44,10 +45,12 @@
inst_user_name=None,
launch_ami=None,
launch_inst_type='m1.small',
+ region=None,
root_volume_size=10,
running_id=None,
secret_key=None,
security_group_ids='',
+ session_token=None,
sriov_type=None,
ssh_key_pair_name=None,
ssh_key_private_key_file=None,
@@ -71,10 +74,12 @@
self.inst_user_name = inst_user_name
self.launch_ami_id = launch_ami
self.launch_ins_type = launch_inst_type
+ self.region = region
self.root_volume_size = int(root_volume_size)
self.running_id = running_id
self.secret_key = secret_key
self.security_group_ids = security_group_ids
+ self.session_token = session_token
self.sriov_type = sriov_type
self.ssh_key_pair_name = ssh_key_pair_name
self.ssh_key_private_key_file = ssh_key_private_key_file
@@ -92,18 +97,17 @@
self.next_device_id = 0
self.operation_complete = False
self.percent_transferred = 0
- self.region = None
self.ssh_client = None
self.storage_volume_size = 2 * self.root_volume_size
# ---------------------------------------------------------------------
- def _attach_volume(self, instance, volume, device=None):
+ def _attach_volume(self, volume, device=None):
"""Attach the given volume to the given instance"""
if not device:
device = self._get_next_disk_id()
self._connect().attach_volume(
VolumeId=volume['VolumeId'],
- InstanceId=instance['InstanceId'],
+ InstanceId=self.helper_instance['InstanceId'],
Device=device)
if self.verbose:
print('Wait for volume attachment')
@@ -232,6 +236,29 @@
self.ssh_client.close()
if self.instance_ids:
self._connect().terminate_instances(InstanceIds=self.instance_ids)
+ waiter = self._connect().get_waiter('instance_terminated')
+ repeat_count = 1
+ error_msg = 'Instance did not stop within allotted time'
+ while repeat_count <= self.wait_count:
+ try:
+ wait_status = waiter.wait(
+ InstanceIds=[self.helper_instance['InstanceId']],
+ Filters=[
+ {
+ 'Name': 'instance-state-name',
+ 'Values': ['terminated']
+ }
+ ]
+ )
+ except:
+ wait_status = 1
+ if self.verbose:
+ self.progress_timer.cancel()
+ repeat_count = self._check_wait_status(
+ wait_status,
+ error_msg,
+ repeat_count
+ )
if self.created_volumes:
for volume in self.created_volumes:
self._detach_volume(volume, True)
@@ -278,13 +305,10 @@
helper_instance = self._launch_helper_instance()
self.helper_instance = helper_instance
store_volume = self._create_storge_volume()
- store_device_id = self._attach_volume(helper_instance, store_volume)
+ store_device_id = self._attach_volume(store_volume)
target_root_volume = self._create_target_root_volume()
- target_root_device_id = self._attach_volume(
- helper_instance,
- target_root_volume
- )
- self._establish_ssh_connection(helper_instance)
+ target_root_device_id = self._attach_volume(target_root_volume)
+ self._establish_ssh_connection()
if not self._device_exists(store_device_id):
store_device_id = self._find_equivalent_device(store_device_id)
self._format_storage_volume(store_device_id)
@@ -491,17 +515,17 @@
return 1
# ---------------------------------------------------------------------
- def _establish_ssh_connection(self, instance):
+ def _establish_ssh_connection(self):
"""Connect to the running instance with ssh"""
if self.verbose:
print('Waiting to obtain instance IP address')
- instance_ip = instance.get('PublicIpAddress')
+ instance_ip = self.helper_instance.get('PublicIpAddress')
if self.use_private_ip:
- instance_ip = instance.get('PrivateIpAddress')
+ instance_ip = self.helper_instance.get('PrivateIpAddress')
timeout_counter = 1
while not instance_ip:
instance = self._connect().describe_instances(
- InstanceIds=[instance['InstanceId']]
+ InstanceIds=[self.helper_instance['InstanceId']]
)['Reservations'][0]['Instances'][0]
instance_ip = instance.get('PublicIpAddress')
if self.use_private_ip:
@@ -917,11 +941,7 @@
break
self._detach_volume(current_root_volume)
- self._attach_volume(
- self.helper_instance,
- target_root_volume,
- device_id
- )
+ self._attach_volume(target_root_volume, device_id)
if self.verbose:
print('Creating new image')
instance_info = self._connect().describe_instances(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ec2uploadimg-5.0.1/lib/ec2utils/upload_VERSION
new/ec2uploadimg-6.0.0/lib/ec2utils/upload_VERSION
--- old/ec2uploadimg-5.0.1/lib/ec2utils/upload_VERSION 2017-09-12
16:51:20.472834548 +0200
+++ new/ec2uploadimg-6.0.0/lib/ec2utils/upload_VERSION 2018-02-05
22:13:08.956943617 +0100
@@ -1 +1 @@
-5.0.1
+6.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ec2uploadimg-5.0.1/man/man1/ec2uploadimg.1
new/ec2uploadimg-6.0.0/man/man1/ec2uploadimg.1
--- old/ec2uploadimg-5.0.1/man/man1/ec2uploadimg.1 2017-09-12
16:51:20.472834548 +0200
+++ new/ec2uploadimg-6.0.0/man/man1/ec2uploadimg.1 2018-02-05
22:13:08.964943447 +0100
@@ -128,6 +128,8 @@
.IP "--security-group-ids AWS_SECURITY_GROUP_IDS"
Specifies a list of security group ids to apply to the helper instance. At
least one of the groups must have port 22 open to support ssh connections.
+.IP "--session-token AWS_SESSION_TOKEN"
+Specifies the AWS session token. Only necessary when using temporary
credentials.
.IP "--snaponly"
When this argument is set only a snapshot of the uploaded image will be
created. The snapshot may then be used in a separate operation to register
@@ -206,7 +208,3 @@
will register a new AMI from the image.
.SH AUTHOR
Robert Schweikert ([email protected])
-
-
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/ec2uploadimg-5.0.1/setup.py
new/ec2uploadimg-6.0.0/setup.py
--- old/ec2uploadimg-5.0.1/setup.py 2017-09-12 16:51:20.472834548 +0200
+++ new/ec2uploadimg-6.0.0/setup.py 2018-02-05 22:13:08.984943025 +0100
@@ -1,7 +1,7 @@
#!/usr/bin/env python
"""Setup module for ec2uploadimg"""
-# Copyright (c) 2015 SUSE LLC, Robert Schweikert <[email protected]>
+# Copyright (c) 2017 SUSE LLC
#
# This file is part of ec2uploadimg.
#
@@ -26,6 +26,13 @@
sys.stderr.write('Python setuptools required, please install.')
sys.exit(1)
+requires = [
+ 'boto3>=1.4.1',
+ 'paramiko',
+ 'python-dateutil',
+ 'ec2utilsbase>=3.0.0,<4.0.0'
+]
+
version = open('lib/ec2utils/upload_VERSION').read().strip()
if __name__ == '__main__':
@@ -33,10 +40,12 @@
name='ec2uploadimg',
description=(
'Command-line tool to upload EC2 images'),
- url='https://github.com/SUSE/Enceladus',
- license='GPL-3.0+',
- author='Robert Schweikert',
- author_email='[email protected]',
+ long_description=open('README.md').read(),
+ url='https://github.com/SUSE/Enceladus/tree/master/ec2utils',
+ license='GPLv3+',
+ install_requires=requires,
+ author='SUSE Public Cloud Team',
+ author_email='[email protected]',
version=version,
packages=setuptools.find_packages('lib'),
package_data={'ec2utils' : ['upload_VERSION']},
@@ -44,5 +53,19 @@
'': 'lib',
},
scripts=['ec2uploadimg'],
- namespace_packages = ['ec2utils']
+ namespace_packages = ['ec2utils'],
+ classifiers=[
+ 'Development Status :: 5 - Production/Stable',
+ 'Intended Audience :: Developers',
+ 'Natural Language :: English',
+ 'License :: OSI Approved :: GNU General Public License v3 or later
(GPLv3+)',
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3.3',
+ 'Programming Language :: Python :: 3.4',
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: Implementation :: CPython',
+ 'Programming Language :: Python :: Implementation :: PyPy'
+ ]
)