awscli 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. checksums.yaml +15 -0
  2. data/README.rdoc +5 -0
  3. data/Rakefile +44 -0
  4. data/bin/awscli +32 -0
  5. data/features/awscli.feature +8 -0
  6. data/features/step_definitions/awscli_steps.rb +6 -0
  7. data/features/support/env.rb +15 -0
  8. data/lib/awscli.rb +44 -0
  9. data/lib/awscli/cli.rb +21 -0
  10. data/lib/awscli/cli/ec2.rb +23 -0
  11. data/lib/awscli/cli/ec2/ami.rb +46 -0
  12. data/lib/awscli/cli/ec2/ebs.rb +85 -0
  13. data/lib/awscli/cli/ec2/eip.rb +56 -0
  14. data/lib/awscli/cli/ec2/instances.rb +195 -0
  15. data/lib/awscli/cli/ec2/keypairs.rb +60 -0
  16. data/lib/awscli/cli/ec2/monitoring.rb +35 -0
  17. data/lib/awscli/cli/ec2/placement.rb +42 -0
  18. data/lib/awscli/cli/ec2/reservedinstmng.rb +45 -0
  19. data/lib/awscli/cli/ec2/secgroups.rb +66 -0
  20. data/lib/awscli/cli/ec2/spot.rb +81 -0
  21. data/lib/awscli/cli/ec2/subnet.rb +43 -0
  22. data/lib/awscli/cli/ec2/tags.rb +45 -0
  23. data/lib/awscli/cli/ec2/vmmng.rb +17 -0
  24. data/lib/awscli/cli/ec2/vpc.rb +42 -0
  25. data/lib/awscli/cli/ec2/vpc/connections.rb +0 -0
  26. data/lib/awscli/cli/ec2/vpc/cust_gateways.rb +0 -0
  27. data/lib/awscli/cli/ec2/vpc/dhcp.rb +51 -0
  28. data/lib/awscli/cli/ec2/vpc/internet_gateways.rb +58 -0
  29. data/lib/awscli/cli/ec2/vpc/net_interfaces.rb +75 -0
  30. data/lib/awscli/cli/ec2/vpc/network_acls.rb +29 -0
  31. data/lib/awscli/cli/ec2/vpc/priv_gatewats.rb +0 -0
  32. data/lib/awscli/cli/ec2/vpc/route_tables.rb +0 -0
  33. data/lib/awscli/cli/s3.rb +12 -0
  34. data/lib/awscli/cli/s3/directories.rb +82 -0
  35. data/lib/awscli/cli/s3/files.rb +77 -0
  36. data/lib/awscli/connection.rb +55 -0
  37. data/lib/awscli/ec2.rb +790 -0
  38. data/lib/awscli/errors.rb +64 -0
  39. data/lib/awscli/helper.rb +8 -0
  40. data/lib/awscli/s3.rb +108 -0
  41. data/lib/awscli/version.rb +3 -0
  42. data/test/default_test.rb +14 -0
  43. data/test/test_helper.rb +9 -0
  44. metadata +182 -0
@@ -0,0 +1,42 @@
1
+ module AwsCli
2
+ module CLI
3
+ module EC2
4
+ require 'awscli/cli/ec2'
5
+ class Vpc < Thor
6
+
7
+ desc "list", "List VPCs"
8
+ def list
9
+ create_ec2_object
10
+ @ec2.list
11
+ end
12
+
13
+ desc "create", "Create a VPC with the CIDR block you specify"
14
+ method_option :cidr_block, :aliases => "-c", :type => :string, :required => true, :desc => "The CIDR block you want the VPC to cover (e.g., 10.0.0.0/16), You can't change the size of a VPC after you create it"
15
+ method_option :tenancy, :type => :string, :default => "default", :desc => "The allowed tenancy of instances launched into the VPC. A value of default means instances can be launched with any tenancy; a value of dedicated means instances must be launched with tenancy as dedicated"
16
+ def create
17
+ create_ec2_object
18
+ @ec2.create options
19
+ end
20
+
21
+ desc "delete", "Deletes a VPC. You must detach or delete all gateways or other objects that are dependent on the VPC first"
22
+ method_option :vpc_id, :aliases => "-v", :type => :string, :required => true, :desc => "The ID of the VPC you want to delete"
23
+ def delete
24
+ create_ec2_object
25
+ @ec2.delete options[:vpc_id]
26
+ end
27
+
28
+ private
29
+
30
+ def create_ec2_object
31
+ puts "ec2 Establishing Connetion..."
32
+ $ec2_conn = Awscli::Connection.new.request_ec2
33
+ puts "ec2 Establishing Connetion... OK"
34
+ @ec2 = Awscli::EC2::Vpc.new($ec2_conn)
35
+ end
36
+
37
+ AwsCli::CLI::Ec2.register AwsCli::CLI::EC2::Vpc, :vpc, 'vpc [COMMAND]', 'EC2 VPC Management'
38
+
39
+ end
40
+ end
41
+ end
42
+ end
File without changes
File without changes
@@ -0,0 +1,51 @@
1
+ module AwsCli
2
+ module CLI
3
+ module EC2
4
+ module VPC
5
+ require 'awscli/cli/ec2/vpc'
6
+ class Dhcp < Thor
7
+
8
+ desc "list", "List Dhcp Options"
9
+ def list
10
+ create_ec2_object
11
+ @ec2.list
12
+ end
13
+
14
+ desc "create", "Creates a set of DHCP options for your VPC"
15
+ method_option :dhcp_configuration_options, :aliases => "-o", :type => :hash, :required => true, :desc => "hash of key value dhcp options(domain-name, domain-name-servers, ntp-servers, netbios-name-servers, netbios-node-type) to assign"
16
+ def create
17
+ create_ec2_object
18
+ @ec2.create options[:dhcp_configuration_options]
19
+ end
20
+
21
+ desc "delete", "Deletes a set of DHCP options that you specify"
22
+ method_option :dhcp_options_id, :aliases => "-d", :type => :string, :required => true, :desc => "The ID of the DHCP options set you want to delete"
23
+ def delete
24
+ create_ec2_object
25
+ @ec2.delete options[:dhcp_options_id]
26
+ end
27
+
28
+ desc "associate", "Associates a set of DHCP options (that you've previously created) with the specified VPC. Or, associates no DHCP options with the VPC"
29
+ method_option :dhcp_options_id, :aliases => "-d", :type => :string, :required => true, :desc => "The ID of the DHCP options you want to associate with the VPC"
30
+ method_option :vpc_id, :aliases => "-v", :type => :string, :required => true, :desc => "The ID of the VPC you want to associate the DHCP options with"
31
+ def associate
32
+ create_ec2_object
33
+ @ec2.associate options[:dhcp_options_id], options[:vpc_id]
34
+ end
35
+
36
+ private
37
+
38
+ def create_ec2_object
39
+ puts "ec2 Establishing Connetion..."
40
+ $ec2_conn = Awscli::Connection.new.request_ec2
41
+ puts "ec2 Establishing Connetion... OK"
42
+ @ec2 = Awscli::EC2::Dhcp.new($ec2_conn)
43
+ end
44
+
45
+ AwsCli::CLI::EC2::Vpc.register AwsCli::CLI::EC2::VPC::Dhcp, :dhcp, 'dhcp [COMMAND]', 'VPC DHCP Management'
46
+
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,58 @@
1
+ module AwsCli
2
+ module CLI
3
+ module EC2
4
+ module VPC
5
+ require 'awscli/cli/ec2/vpc'
6
+ class InternetGateways < Thor
7
+
8
+ desc "list", "List Internet Gateways"
9
+ def list
10
+ create_ec2_object
11
+ @ec2.list
12
+ end
13
+
14
+ desc "create", "Create Internet Gateway"
15
+ def create
16
+ create_ec2_object
17
+ @ec2.create
18
+ end
19
+
20
+ desc "delete", "Delete Internet Gateway"
21
+ method_option :internet_gateway_id, :aliases => "-i", :type => :string, :required => true, :desc => "id of the internet gateway to delete"
22
+ def delete
23
+ create_ec2_object
24
+ @ec2.delete options[:internet_gateway_id]
25
+ end
26
+
27
+ desc "attach", "Attach Internet Gateway"
28
+ method_option :internet_gateway_id, :aliases => "-i", :type => :string, :required => true, :desc => "id of the internet gateway to attach"
29
+ method_option :vpc_id, :aliases => "-v", :type => :string, :required => true, :desc => "id vpc to attach to"
30
+ def attach
31
+ create_ec2_object
32
+ @ec2.attach options[:internet_gateway_id], options[:vpc_id]
33
+ end
34
+
35
+ desc "deattach", "Deattach Internet Gateway"
36
+ method_option :internet_gateway_id, :aliases => "-i", :type => :string, :required => true, :desc => "id of the internet gateway to attach"
37
+ method_option :vpc_id, :aliases => "-v", :type => :string, :required => true, :desc => "id vpc to attach to"
38
+ def deattach
39
+ create_ec2_object
40
+ @ec2.deattach options[:internet_gateway_id], options[:vpc_id]
41
+ end
42
+
43
+ private
44
+
45
+ def create_ec2_object
46
+ puts "ec2 Establishing Connetion..."
47
+ $ec2_conn = Awscli::Connection.new.request_ec2
48
+ puts "ec2 Establishing Connetion... OK"
49
+ @ec2 = Awscli::EC2::InternetGateways.new($ec2_conn)
50
+ end
51
+
52
+ AwsCli::CLI::EC2::Vpc.register AwsCli::CLI::EC2::VPC::InternetGateways, :internetgateways, 'internetgateways [COMMAND]', 'VPC Network Internet Gateway Management'
53
+
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,75 @@
1
+ module AwsCli
2
+ module CLI
3
+ module EC2
4
+ module VPC
5
+ require 'awscli/cli/ec2/vpc'
6
+ class NetworkInterfaces < Thor
7
+
8
+ desc "list", "List Network Interfaces"
9
+ def list
10
+ create_ec2_object
11
+ @ec2.list
12
+ end
13
+
14
+ desc "create", "Creates a network interface in the specified subnet. This command is supported only in EC2-VPC"
15
+ method_option :subnet_id, :aliases => "-s", :type => :string, :required => true, :desc => "subnet id"
16
+ method_option :description, :aliases => "-d", :type => :string, :desc => "Set the description of the network interface"
17
+ method_option :private_ip_address, :aliases => "-p", :type => :string, :desc => "The primary private IP address of the network interface. If an IP address is not specified, one will be auto-assigned to the interface"
18
+ method_option :group_set, :aliases => "-g", :type => :array, :desc => "A security group to add to the network interface"
19
+ def create
20
+ create_ec2_object
21
+ @ec2.create options
22
+ end
23
+
24
+ desc "delete", "Deletes a network interface. Network interfaces must be detached from an instance before they can be deleted."
25
+ method_option :network_interface_id, :aliases => "-n", :type => :string, :required => true, :desc => "Id of the network interface to delete"
26
+ def delete
27
+ create_ec2_object
28
+ @ec2.delete options[:network_interface_id]
29
+ end
30
+
31
+ desc "attach", "Attaches a network interface to an instance"
32
+ method_option :network_interface_id, :aliases => "-n", :type => :string, :required => true, :desc => "ID of the network interface to attach"
33
+ method_option :instance_id, :aliases => "-i", :type => :string, :required => true, :desc => "ID of the instance that will be attached to the network interface"
34
+ method_option :device_index, :aliases => "-d", :type => :numeric, :required => true, :desc => "index of the device for the network interface attachment on the instance"
35
+ def attach
36
+ create_ec2_object
37
+ @ec2.attach options[:network_interface_id], options[:instance_id], options[:device_index]
38
+ end
39
+
40
+ desc "deattach", "Detaches a network interface"
41
+ method_option :attachment_id, :aliases => "-a", :type => :string, :required => true, :desc => "ID of the attachment to detach"
42
+ method_option :force, :aliases => "-f", :type => :boolean, :default => false, :desc => "Set to true to force a detachment"
43
+ def deattach
44
+ create_ec2_object
45
+ @ec2.deattach options[:attachment_id], options[:force]
46
+ end
47
+
48
+ desc "modify_attribute", "Modifies a network interface attribute. You can specify only one attribute at a time"
49
+ method_option :network_interface_id, :aliases => "-n", :type => :string, :required => true, :desc => "The ID of the network interface you want to modify an attribute of"
50
+ method_option :attribute, :aliases => "-a", :type => :string, :required => true, :desc => "The attribute to modify, must be one of 'description', 'groupSet', 'sourceDestCheck' or 'attachment'"
51
+ method_option :description, :aliases => "-d", :type => :string, :desc => "New value of attribute - description"
52
+ method_option :group_set, :aliases => "-g", :type => :array, :desc => "New value of attribute - a list of group id's"
53
+ method_option :source_dest_check, :aliases => "-s", :type => :boolean, :desc => "New value of attribute - a boolean value"
54
+ method_option :attachment, :aliases => "-t", :type => :hash, :desc => "a hash with: attachmentid - the attachment to change & deleteOnTermination - a boolean"
55
+ def modify_attribute
56
+ create_ec2_object
57
+ @ec2.modify_attribute options
58
+ end
59
+
60
+ private
61
+
62
+ def create_ec2_object
63
+ puts "ec2 Establishing Connetion..."
64
+ $ec2_conn = Awscli::Connection.new.request_ec2
65
+ puts "ec2 Establishing Connetion... OK"
66
+ @ec2 = Awscli::EC2::NetworkInterfaces.new($ec2_conn)
67
+ end
68
+
69
+ AwsCli::CLI::EC2::Vpc.register AwsCli::CLI::EC2::VPC::NetworkInterfaces, :netinterfaces, 'netinterfaces [COMMAND]', 'VPC Network Acl Management'
70
+
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,29 @@
1
+ module AwsCli
2
+ module CLI
3
+ module EC2
4
+ module VPC
5
+ require 'awscli/cli/ec2/vpc'
6
+ class NetworkAcl < Thor
7
+
8
+ desc "list", "List NACLs"
9
+ def list
10
+ create_ec2_object
11
+ @ec2.list
12
+ end
13
+
14
+ private
15
+
16
+ def create_ec2_object
17
+ puts "ec2 Establishing Connetion..."
18
+ $ec2_conn = Awscli::Connection.new.request_ec2
19
+ puts "ec2 Establishing Connetion... OK"
20
+ @ec2 = Awscli::EC2::NetworkAcl.new($ec2_conn)
21
+ end
22
+
23
+ AwsCli::CLI::EC2::Vpc.register AwsCli::CLI::EC2::VPC::NetworkAcl, :networkacl, 'networkacl [COMMAND]', 'VPC Network Acl Management'
24
+
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
File without changes
File without changes
@@ -0,0 +1,12 @@
1
+ module AwsCli
2
+ module CLI
3
+ require 'awscli/cli'
4
+ require 'awscli/connection'
5
+ require 'awscli/s3'
6
+ class S3 < Thor
7
+ class_option :region, :type => :string, :desc => "region to connect to"
8
+
9
+ AwsCli::Cli.register AwsCli::CLI::S3, :s3, 's3 [COMMAND]', 'Simple Storage Service Interface'
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,82 @@
1
+ module AwsCli
2
+ module CLI
3
+ module Sss
4
+ require 'awscli/cli/s3'
5
+ class Directories < Thor
6
+
7
+ desc "list", "List S3 buckets"
8
+ def list
9
+ create_s3_object
10
+ @s3.list
11
+ end
12
+
13
+ desc "create", "Create an new S3 bucket"
14
+ method_option :key, :aliases => "-k", :type => :string, :required => true, :desc => "name of the bucket to create(name should be globally unique)"
15
+ method_option :public, :aliases => "-p", :type => :boolean, :default => false, :desc => "makes the bucket publicly availble"
16
+ # method_option :x_amz_acl, :aliases => "-x", :type => :string, :desc => "Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']"
17
+ def create
18
+ create_s3_object
19
+ @s3.create options
20
+ end
21
+
22
+ desc "delete", "Delete existing S3 bucket"
23
+ method_option :key, :aliases => "-k", :type => :string, :required => true, :desc => "name of the bucket to delete"
24
+ def delete
25
+ create_s3_object
26
+ @s3.delete options[:key]
27
+ end
28
+
29
+ desc "set_acl", "Change access control list for an S3 bucket"
30
+ method_option :key, :aliases => "-k", :type => :string, :required => true, :desc => "name of the bucket to change acl"
31
+ method_option :acl, :aliases => "-a", :type => :string, :required => true, :desc => "Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']"
32
+ def set_acl
33
+ create_s3_object
34
+ @s3.set_acl options[:key], options[:acl]
35
+ end
36
+
37
+ desc "get_acl", "Get access control list for an S3 bucket"
38
+ method_option :key, :aliases => "-k", :type => :string, :required => true, :desc => "name of the bucket to get acl"
39
+ def get_acl
40
+ create_s3_object
41
+ @s3.get_acl options[:key]
42
+ end
43
+
44
+ desc "get_logging_status", "Get logging status for an S3 bucket"
45
+ method_option :key, :aliases => "-k", :type => :string, :required => true, :desc => "name of the bucket"
46
+ def get_logging_status
47
+ create_s3_object
48
+ @s3.get_logging_status options[:key]
49
+ end
50
+
51
+ # desc "set_logging_status", "Change logging status for an S3 bucket"
52
+ # method_option :key, :aliases => "-k", :type => :string, :required => true, :desc => "name of the bucket"
53
+ # method_option :owner, :aliases => "-o", :type => :hash, :banner => "ID:NAME", :desc => "set id and displayname of the owner"
54
+ # method_option :grantee, :aliases => "-g", :type => :hash, :banner => "NAME:ID|EMAIL|URI", :desc => "Grantee hash containing, <Display name of the grantee>: <ID of the grantee (or) Email of the grantee (or) Uri of the group to grant access>"
55
+ # method_option :permission, :aliases => "-p", :type => :string, :desc => "Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]"
56
+ # def set_logging_status
57
+ # create_s3_object
58
+ # (acl ||= []) << options[:grantee] if options[:grantee]
59
+ # acl << options[:permission] if options[:permission]
60
+ # logging_status = Hash.new
61
+ # logging_status['Owner'] = options[:owner] if options[:owner]
62
+ # logging_status['AccessControlList'] = acl if acl
63
+ # puts "Empty logging_status will disable logging" if logging_status.nil?
64
+ # puts "#{logging_status}"
65
+ # @s3.set_logging_status options[:key], logging_status
66
+ # end
67
+
68
+ private
69
+
70
+ def create_s3_object
71
+ puts "S3 Establishing Connetion..."
72
+ $s3_conn = Awscli::Connection.new.request_s3
73
+ puts "S3 Establishing Connetion... OK"
74
+ @s3 = Awscli::S3::Directories.new($s3_conn)
75
+ end
76
+
77
+ AwsCli::CLI::S3.register AwsCli::CLI::Sss::Directories, :dirs, 'dirs [COMMAND]', 'S3 Directories Management'
78
+
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,77 @@
1
+ module AwsCli
2
+ module CLI
3
+ module Sss
4
+ require 'awscli/cli/s3'
5
+ class Files < Thor
6
+
7
+ desc "list", "list objects(files) in a bucket"
8
+ method_option :bucket_name, :aliases => "-b", :required => true, :desc => "bucket name to print the contents from"
9
+ def list
10
+ create_s3_object
11
+ @s3.list options[:bucket_name]
12
+ end
13
+
14
+ desc "put", "put a file into a bucket"
15
+ method_option :bucket_name, :aliases => "-b", :required => true, :desc => "name of the bucket to upload the file to"
16
+ method_option :file_path, :aliases => "-p", :required => true, :desc => "local file path"
17
+ def put
18
+ create_s3_object
19
+ @s3.upload_file options[:bucket_name], options[:file_path]
20
+ end
21
+
22
+ desc "get", "get a file from a bucket"
23
+ method_option :bucket_name, :aliases => "-b", :required => true, :desc => "name of the bucket to download the file from"
24
+ method_option :file_name, :aliases => "-f", :required => true, :desc => "name of file to download"
25
+ method_option :local_path, :aliases => "-p", :required => true, :desc => "local fs path, where to download the file to"
26
+ def get
27
+ create_s3_object
28
+ @s3.download_file options[:bucket_name], options[:file_name], options[:local_path]
29
+ end
30
+
31
+ desc "delete", "delete a file from a bucket"
32
+ method_option :bucket_name, :aliases => "-b", :required => true, :desc => "name of the bucket to download the file from"
33
+ method_option :file_name, :aliases => "-f", :required => true, :desc => "name of file to download"
34
+ def delete
35
+ create_s3_object
36
+ @s3.delete_file options[:bucket_name], options[:file_name]
37
+ end
38
+
39
+ # s3.directories.get('arun123').files.get('block_9091299035346850259').copy('ashrithtst', 'testfile')
40
+ desc "copy", "copy object from one bucket to another"
41
+ method_option :source_bucket, :aliases => "-s", :required => true, :desc => "source bucket name from where to copy the file"
42
+ method_option :source_file, :aliases => "-f", :required => true, :desc => "source file name to copy"
43
+ method_option :dest_bucket, :aliases => "-d", :required => true, :desc => "destination bucket name to copy the file to"
44
+ method_option :dest_file, :alises => "-r", :required => true, :desc => "destination file name"
45
+ def copy
46
+ create_s3_object
47
+ @s3.copy_file options[:source_bucket], options[:source_file], options[:dest_bucket], options[:dest_file]
48
+ end
49
+
50
+ desc "public_url", "show the public url of a file"
51
+ method_option :bucket_name, :aliases => "-b", :required => true, :desc => "name of the bucket to download the file from"
52
+ method_option :file_name, :aliases => "-f", :required => true, :desc => "name of file to download"
53
+ def public_url
54
+ create_s3_object
55
+ @s3.get_public_url options[:bucket_name], options[:file_name]
56
+ end
57
+
58
+
59
+ private
60
+
61
+ def create_s3_object
62
+ puts "S3 Establishing Connetion..."
63
+ $s3_conn = if parent_options[:region]
64
+ Awscli::Connection.new.request_s3(parent_options[:region])
65
+ else
66
+ Awscli::Connection.new.request_s3
67
+ end
68
+ puts "S3 Establishing Connetion... OK"
69
+ @s3 = Awscli::S3::Files.new($s3_conn)
70
+ end
71
+
72
+ AwsCli::CLI::S3.register AwsCli::CLI::Sss::Files, :files, 'files [COMMAND]', 'S3 Files Management'
73
+
74
+ end
75
+ end
76
+ end
77
+ end