awscli 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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,64 @@
1
+ module Awscli
2
+ module Errors
3
+ require 'awscli/helper'
4
+
5
+ class Error < StandardError
6
+ attr_accessor :verbose
7
+
8
+ def self.slurp(error, message=nil)
9
+ new_error = new(message)
10
+ new_error.set_backtrace(error.backtrace)
11
+ new_error.verbose = error.message
12
+ new_error
13
+ end
14
+ end
15
+
16
+ class LoadError < LoadError; end
17
+
18
+ class NotImplemented < Awscli::Errors::Error; end
19
+
20
+ def self.missing_environment_variable
21
+ message = <<-ERRMSG1.gsub(/^ {8}/, '')
22
+ Missing AWSCLI_CONFIG_FILE environment variable
23
+ Please export the variable 'export AWSCLI_CONFIG_FILE="~/awscli_config.yml'
24
+ ERRMSG1
25
+ raise(Awscli::Errors::LoadError.new(message))
26
+ end
27
+
28
+ def self.missing_config_file
29
+ message = <<-ERRMSG2.gsub(/^ {8}/, '')
30
+ File Load Error, check if file exists
31
+ ERRMSG2
32
+ raise(Awscli::Errors::LoadError.new(message))
33
+ end
34
+
35
+ def self.missing_credentials
36
+ message = <<-ERRMSG3.gsub(/^ {8}/, '')
37
+ MISSING CREDENTIALS
38
+ Add the following to your resource config file:
39
+ #############################
40
+ #Aws Credentials
41
+ #Key value pairs should look like this
42
+ #aws_access_key_id: 022QF06E7MXBSAMPLE
43
+ aws_access_key_id:
44
+ aws_secret_access_key:
45
+ region:
46
+ #
47
+ #End of Aws Credentials
48
+ ############################
49
+ ERRMSG3
50
+ raise(Awscli::Errors::LoadError.new(message))
51
+ end
52
+
53
+ def self.invalid_credentials
54
+ message = "Invalid Credentials, Please check your AWS access and secret key id."
55
+ raise(Awscli::Errors::LoadError.new(message))
56
+ end
57
+
58
+ def self.invalid_region
59
+ message = "Invalid region found in config file , Available Regions #{Awscli::Instances::REGIONS}"
60
+ raise(Awscli::Errors::LoadError.new(message))
61
+ end
62
+
63
+ end
64
+ end
@@ -0,0 +1,8 @@
1
+ module Awscli
2
+ module Instances
3
+ INSTANCE_SIZES = %w(t1.micro m1.small m1.medium m1.large m1.xlarge m3.xlarge m3.2xlarge m2.xlarge
4
+ m2.2xlarge m2.4xlarge c1.medium c1.xlarge hs1.8xlarge)
5
+ INSTANCE_TYPES = %w(on-demand spot)
6
+ REGIONS = %w(eu-west-1 sa-east-1 us-east-1 ap-northeast-1 us-west-2 us-west-1 ap-southeast-1 ap-southeast-2)
7
+ end
8
+ end
data/lib/awscli/s3.rb ADDED
@@ -0,0 +1,108 @@
1
+ module Awscli
2
+ module S3
3
+
4
+ class Files
5
+ def initialize connection, options = {}
6
+ @@conn = connection
7
+ end
8
+
9
+ def list dir_name
10
+ dir = @@conn.directories.get(dir_name)
11
+ abort "cannot find bucket: #{dir_name}" unless dir
12
+ puts "LastModified \t SIZE \t Object"
13
+ dir.files.each do |file|
14
+ puts "#{file.last_modified} \t #{file.content_length} \t #{file.key}"
15
+ end
16
+ end
17
+
18
+ def upload_file dir_name, file_path
19
+ dir = @@conn.directories.get(dir_name)
20
+ abort "cannot find bucket: #{dir_name}" unless dir
21
+ file = File.expand_path(file_path)
22
+ abort "Invalid file path: #{file_path}" unless File.exist?(file)
23
+ file_name = File.basename(file)
24
+ dir.files.create(
25
+ :key => file_name,
26
+ :body => File.open(file),
27
+ :public => true
28
+ )
29
+ puts "Uploaded file: #{file_name} to bucket: #{dir_name}"
30
+ end
31
+
32
+ def download_file dir_name, file_name, path
33
+ dir = @@conn.directories.get(dir_name)
34
+ abort "cannot find bucket: #{dir_name}" unless dir
35
+ local_path = File.expand_path(path)
36
+ abort "Invalid file path: #{path}" unless File.exist?(local_path)
37
+ remote_file = dir.files.get(file_name)
38
+ abort "cannot find file: #{file_name}" unless remote_file
39
+ File.open("#{local_path}/#{remote_file.key}", 'w') do |f|
40
+ f.write(remote_file.body)
41
+ end
42
+ puts "Downloaded file: #{remote_file.key} to path: #{local_path}"
43
+ end
44
+
45
+ def delete_file dir_name, file_name
46
+ dir = @@conn.directories.get(dir_name)
47
+ abort "cannot find bucket: #{dir_name}" unless dir
48
+ remote_file = dir.files.get(file_name)
49
+ abort "cannot find file: #{file_name}" unless remote_file
50
+ remote_file.destroy
51
+ puts "Deleted file: #{file_name}"
52
+ end
53
+
54
+ def copy_file source_dir, source_file, dest_dir, dest_file
55
+ @@conn.directories.get(source_dir).files.get(source_file).copy(dest_dir, dest_file)
56
+ end
57
+
58
+ def get_public_url dir_name, file_name
59
+ url = @@conn.directories.get(dir_name).files.get(file_name).public_url
60
+ puts "public url for the file: #{file_name} is #{url}"
61
+ end
62
+ end
63
+
64
+ class Directories
65
+ def initialize connection, options = {}
66
+ @@conn = connection
67
+ end
68
+
69
+ def list
70
+ @@conn.directories.table
71
+ end
72
+
73
+ def create options
74
+ dir = @@conn.directories.create(options)
75
+ puts "Create bucket: #{dir.key}"
76
+ end
77
+
78
+ def delete dir_name
79
+ dir = @@conn.directories.get(dir_name)
80
+ abort "Cannot find bucket #{dir_name}" unless dir
81
+ dir.destroy
82
+ puts "Deleted Bucket: #{dir_name}"
83
+ end
84
+
85
+ def get_acl dir_name
86
+ dir = @@conn.directories.get(dir_name)
87
+ abort "Cannot find bucket #{dir_name}" unless dir
88
+ puts dir.acl
89
+ end
90
+
91
+ def set_acl dir_name, acl
92
+ dir = @@conn.directories.get(dir_name)
93
+ abort "Cannot find bucket #{dir_name}" unless dir
94
+ dir.acl = acl
95
+ puts "Acl has been changed to #{acl}"
96
+ end
97
+
98
+ def get_logging_status dir_name
99
+ puts @@conn.get_bucket_logging(dir_name).body['BucketLoggingStatus']
100
+ end
101
+
102
+ def set_logging_status dir_name, logging_status = {}
103
+ @@conn.put_bucket_logging dir_name, logging_status
104
+ end
105
+ end
106
+
107
+ end
108
+ end
@@ -0,0 +1,3 @@
1
+ module Awscli
2
+ VERSION = '0.0.3'
3
+ end
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ class DefaultTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def teardown
9
+ end
10
+
11
+ def test_the_truth
12
+ assert true
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ require 'test/unit'
2
+
3
+ # Add test libraries you want to use here, e.g. mocha
4
+
5
+ class Test::Unit::TestCase
6
+
7
+ # Add global extensions to the test case class here
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,182 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: awscli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Ashrith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-03-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rdoc
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: aruba
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: thor
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.17.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.17.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: fog
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.10.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.10.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: highline
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: Command Line Interface for Amazon Web Services built in Ruby, using Fog
98
+ and Thor, This gem is still in development.
99
+ email: ashrith@me.com
100
+ executables:
101
+ - awscli
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - Rakefile
106
+ - bin/awscli
107
+ - lib/awscli/cli/ec2/ami.rb
108
+ - lib/awscli/cli/ec2/ebs.rb
109
+ - lib/awscli/cli/ec2/eip.rb
110
+ - lib/awscli/cli/ec2/instances.rb
111
+ - lib/awscli/cli/ec2/keypairs.rb
112
+ - lib/awscli/cli/ec2/monitoring.rb
113
+ - lib/awscli/cli/ec2/placement.rb
114
+ - lib/awscli/cli/ec2/reservedinstmng.rb
115
+ - lib/awscli/cli/ec2/secgroups.rb
116
+ - lib/awscli/cli/ec2/spot.rb
117
+ - lib/awscli/cli/ec2/subnet.rb
118
+ - lib/awscli/cli/ec2/tags.rb
119
+ - lib/awscli/cli/ec2/vmmng.rb
120
+ - lib/awscli/cli/ec2/vpc/connections.rb
121
+ - lib/awscli/cli/ec2/vpc/cust_gateways.rb
122
+ - lib/awscli/cli/ec2/vpc/dhcp.rb
123
+ - lib/awscli/cli/ec2/vpc/internet_gateways.rb
124
+ - lib/awscli/cli/ec2/vpc/net_interfaces.rb
125
+ - lib/awscli/cli/ec2/vpc/network_acls.rb
126
+ - lib/awscli/cli/ec2/vpc/priv_gatewats.rb
127
+ - lib/awscli/cli/ec2/vpc/route_tables.rb
128
+ - lib/awscli/cli/ec2/vpc.rb
129
+ - lib/awscli/cli/ec2.rb
130
+ - lib/awscli/cli/s3/directories.rb
131
+ - lib/awscli/cli/s3/files.rb
132
+ - lib/awscli/cli/s3.rb
133
+ - lib/awscli/cli.rb
134
+ - lib/awscli/connection.rb
135
+ - lib/awscli/ec2.rb
136
+ - lib/awscli/errors.rb
137
+ - lib/awscli/helper.rb
138
+ - lib/awscli/s3.rb
139
+ - lib/awscli/version.rb
140
+ - lib/awscli.rb
141
+ - test/default_test.rb
142
+ - test/test_helper.rb
143
+ - README.rdoc
144
+ - features/awscli.feature
145
+ - features/step_definitions/awscli_steps.rb
146
+ - features/support/env.rb
147
+ homepage: http://github.com/ashrithr/awscli
148
+ licenses: []
149
+ metadata: {}
150
+ post_install_message:
151
+ rdoc_options:
152
+ - --title
153
+ - awscli
154
+ - --main
155
+ - README.rdoc
156
+ - -ri
157
+ require_paths:
158
+ - lib
159
+ - lib
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ required_rubygems_version: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ! '>='
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
170
+ requirements: []
171
+ rubyforge_project:
172
+ rubygems_version: 2.0.3
173
+ signing_key:
174
+ specification_version: 4
175
+ summary: Command Line Interface for Amazon Web Services built in Ruby, using Fog and
176
+ Thor
177
+ test_files:
178
+ - features/awscli.feature
179
+ - features/step_definitions/awscli_steps.rb
180
+ - features/support/env.rb
181
+ - test/default_test.rb
182
+ - test/test_helper.rb