joyent 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.0.4
data/bin/joyent CHANGED
@@ -3,8 +3,8 @@
3
3
  require 'rubygems'
4
4
  require 'thor'
5
5
  require 'yaml'
6
- require File.join(File.dirname(__FILE__), '../lib/joyent')
7
6
  require 'highline/import'
7
+ require File.join(File.dirname(__FILE__), '../lib/joyent')
8
8
 
9
9
  class JoyentCLI < Thor
10
10
  private
@@ -28,8 +28,8 @@ class JoyentCLI < Thor
28
28
  end
29
29
 
30
30
  def get_config
31
- @username = ask("Username (login): ")
32
- @password = ask("Password: "){|q| q.echo = false}
31
+ @username = ask("Username (login): "){|q| q.echo = true}
32
+ @password = ask("Password: "){|q| q.echo = '*'}
33
33
 
34
34
  config_file = File.join(ENV['HOME'], ".joyentcli")
35
35
  config = {"username" => @username, "password" => @password}
@@ -38,8 +38,52 @@ class JoyentCLI < Thor
38
38
  }
39
39
  end
40
40
 
41
+ def get_rsa_key(key)
42
+ if key =~ /^ssh-rsa\s/
43
+ key
44
+ else
45
+ File.open(key, 'r').read
46
+ end
47
+ end
48
+
41
49
  public
42
50
 
51
+ #
52
+ # Keys
53
+ #
54
+ desc "list_keys", "list all of the available keys"
55
+ def list_keys
56
+ conn = get_connection
57
+ conn.keys.list.each do |dc|
58
+ puts dc.name
59
+ end
60
+ end
61
+
62
+ desc "get_key NAME", "get the text of the specified key"
63
+ def get_key(name)
64
+ conn = get_connection
65
+ key = conn.keys.get(name)
66
+ puts key.key
67
+ end
68
+
69
+ desc "create_key", "create a new public key with NAME and KEY"
70
+ method_option :name, :type => :string, :aliases => "-n", :required => true
71
+ method_option :key, :type => :string, :aliases => "-k", :required => true
72
+ def create_key
73
+ conn = get_connection
74
+ key = conn.keys.create(options["name"], get_rsa_key(options["key"]))
75
+ puts key.name
76
+ puts key.key
77
+ end
78
+
79
+ desc "delete_key NAME", "get the text of the specified key"
80
+ def delete_key(name)
81
+ conn = get_connection
82
+ key = conn.keys.get(name)
83
+ key.delete
84
+ puts "DELETED: #{key.name}"
85
+ end
86
+
43
87
  #
44
88
  # Datacenters
45
89
  #
data/joyent.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{joyent}
8
- s.version = "0.0.3"
8
+ s.version = "0.0.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ben Wyrosdick"]
12
- s.date = %q{2011-09-15}
12
+ s.date = %q{2011-09-29}
13
13
  s.default_executable = %q{joyent}
14
14
  s.description = %q{Ruby interface to the joyent cloud API}
15
15
  s.email = %q{ben.wyrosdick@gmail.com}
@@ -34,6 +34,8 @@ Gem::Specification.new do |s|
34
34
  "lib/joyent/datacenters.rb",
35
35
  "lib/joyent/dataset.rb",
36
36
  "lib/joyent/datasets.rb",
37
+ "lib/joyent/key.rb",
38
+ "lib/joyent/keys.rb",
37
39
  "lib/joyent/machine.rb",
38
40
  "lib/joyent/machines.rb",
39
41
  "lib/joyent/package.rb",
@@ -44,11 +46,10 @@ Gem::Specification.new do |s|
44
46
  s.homepage = %q{http://github.com/mongohq/joyent}
45
47
  s.licenses = ["MIT"]
46
48
  s.require_paths = ["lib"]
47
- s.rubygems_version = %q{1.3.7}
49
+ s.rubygems_version = %q{1.6.2}
48
50
  s.summary = %q{Ruby interface to the joyent cloud API}
49
51
 
50
52
  if s.respond_to? :specification_version then
51
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
53
  s.specification_version = 3
53
54
 
54
55
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -43,6 +43,10 @@ module Joyent
43
43
  end
44
44
  end
45
45
 
46
+ def keys
47
+ @keys ||= Joyent::Keys.new(self)
48
+ end
49
+
46
50
  def datacenters
47
51
  @datacenters ||= Joyent::Datacenters.new(self)
48
52
  end
data/lib/joyent/key.rb ADDED
@@ -0,0 +1,16 @@
1
+ module Joyent
2
+ class Key
3
+ attr_reader :name, :key
4
+
5
+ def initialize(connection, attributes)
6
+ @connection = connection
7
+
8
+ @name = attributes["name"]
9
+ @key = attributes["key"]
10
+ end
11
+
12
+ def delete
13
+ @connection.execute(:delete, "/keys/#{name}")
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,19 @@
1
+ module Joyent
2
+ class Keys
3
+ def initialize(connection)
4
+ @connection = connection
5
+ end
6
+
7
+ def list
8
+ @connection.execute(:get, "/keys").map{|attributes| Joyent::Key.new(@connection, attributes)}
9
+ end
10
+
11
+ def get(name)
12
+ Joyent::Key.new(@connection, @connection.execute(:get, "/keys/#{name}"))
13
+ end
14
+
15
+ def create(name, key)
16
+ Joyent::Key.new(@connection, @connection.execute(:post, "/keys", {:name => name, :key => key}))
17
+ end
18
+ end
19
+ end
@@ -5,7 +5,7 @@ module Joyent
5
5
  end
6
6
 
7
7
  def list
8
- @connection.execute(:get, "/machines").map{|attributes| Joyent::Machine.new(self, attributes)}
8
+ @connection.execute(:get, "/machines").map{|attributes| Joyent::Machine.new(@connection, attributes)}
9
9
  end
10
10
 
11
11
  def get(id)
metadata CHANGED
@@ -1,179 +1,136 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: joyent
3
- version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Ben Wyrosdick
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-09-15 00:00:00 -07:00
12
+ date: 2011-09-29 00:00:00.000000000 -07:00
19
13
  default_executable: joyent
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- type: :runtime
23
- prerelease: false
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
24
16
  name: json
25
- version_requirements: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &2152071900 !ruby/object:Gem::Requirement
26
18
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 3
31
- segments:
32
- - 0
33
- version: "0"
34
- requirement: *id001
35
- - !ruby/object:Gem::Dependency
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
36
23
  type: :runtime
37
24
  prerelease: false
25
+ version_requirements: *2152071900
26
+ - !ruby/object:Gem::Dependency
38
27
  name: thor
39
- version_requirements: &id002 !ruby/object:Gem::Requirement
28
+ requirement: &2152071420 !ruby/object:Gem::Requirement
40
29
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
48
- requirement: *id002
49
- - !ruby/object:Gem::Dependency
50
- type: :development
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
51
35
  prerelease: false
36
+ version_requirements: *2152071420
37
+ - !ruby/object:Gem::Dependency
52
38
  name: shoulda
53
- version_requirements: &id003 !ruby/object:Gem::Requirement
39
+ requirement: &2152070940 !ruby/object:Gem::Requirement
54
40
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
62
- requirement: *id003
63
- - !ruby/object:Gem::Dependency
41
+ requirements:
42
+ - - ! '>='
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
64
45
  type: :development
65
46
  prerelease: false
47
+ version_requirements: *2152070940
48
+ - !ruby/object:Gem::Dependency
66
49
  name: yard
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
50
+ requirement: &2152070460 !ruby/object:Gem::Requirement
68
51
  none: false
69
- requirements:
52
+ requirements:
70
53
  - - ~>
71
- - !ruby/object:Gem::Version
72
- hash: 7
73
- segments:
74
- - 0
75
- - 6
76
- - 0
54
+ - !ruby/object:Gem::Version
77
55
  version: 0.6.0
78
- requirement: *id004
79
- - !ruby/object:Gem::Dependency
80
56
  type: :development
81
57
  prerelease: false
58
+ version_requirements: *2152070460
59
+ - !ruby/object:Gem::Dependency
82
60
  name: bundler
83
- version_requirements: &id005 !ruby/object:Gem::Requirement
61
+ requirement: &2152069980 !ruby/object:Gem::Requirement
84
62
  none: false
85
- requirements:
63
+ requirements:
86
64
  - - ~>
87
- - !ruby/object:Gem::Version
88
- hash: 23
89
- segments:
90
- - 1
91
- - 0
92
- - 0
65
+ - !ruby/object:Gem::Version
93
66
  version: 1.0.0
94
- requirement: *id005
95
- - !ruby/object:Gem::Dependency
96
67
  type: :development
97
68
  prerelease: false
69
+ version_requirements: *2152069980
70
+ - !ruby/object:Gem::Dependency
98
71
  name: jeweler
99
- version_requirements: &id006 !ruby/object:Gem::Requirement
72
+ requirement: &2152085860 !ruby/object:Gem::Requirement
100
73
  none: false
101
- requirements:
74
+ requirements:
102
75
  - - ~>
103
- - !ruby/object:Gem::Version
104
- hash: 7
105
- segments:
106
- - 1
107
- - 6
108
- - 4
76
+ - !ruby/object:Gem::Version
109
77
  version: 1.6.4
110
- requirement: *id006
111
- - !ruby/object:Gem::Dependency
112
78
  type: :development
113
79
  prerelease: false
80
+ version_requirements: *2152085860
81
+ - !ruby/object:Gem::Dependency
114
82
  name: rcov
115
- version_requirements: &id007 !ruby/object:Gem::Requirement
83
+ requirement: &2152085380 !ruby/object:Gem::Requirement
116
84
  none: false
117
- requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- hash: 3
121
- segments:
122
- - 0
123
- version: "0"
124
- requirement: *id007
125
- - !ruby/object:Gem::Dependency
126
- type: :runtime
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
127
90
  prerelease: false
91
+ version_requirements: *2152085380
92
+ - !ruby/object:Gem::Dependency
128
93
  name: highline
129
- version_requirements: &id008 !ruby/object:Gem::Requirement
94
+ requirement: &2152084900 !ruby/object:Gem::Requirement
130
95
  none: false
131
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- hash: 3
135
- segments:
136
- - 0
137
- version: "0"
138
- requirement: *id008
139
- - !ruby/object:Gem::Dependency
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
140
100
  type: :runtime
141
101
  prerelease: false
102
+ version_requirements: *2152084900
103
+ - !ruby/object:Gem::Dependency
142
104
  name: thor
143
- version_requirements: &id009 !ruby/object:Gem::Requirement
105
+ requirement: &2152084420 !ruby/object:Gem::Requirement
144
106
  none: false
145
- requirements:
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- hash: 3
149
- segments:
150
- - 0
151
- version: "0"
152
- requirement: *id009
153
- - !ruby/object:Gem::Dependency
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
154
111
  type: :runtime
155
112
  prerelease: false
113
+ version_requirements: *2152084420
114
+ - !ruby/object:Gem::Dependency
156
115
  name: json
157
- version_requirements: &id010 !ruby/object:Gem::Requirement
116
+ requirement: &2152083940 !ruby/object:Gem::Requirement
158
117
  none: false
159
- requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- hash: 3
163
- segments:
164
- - 0
165
- version: "0"
166
- requirement: *id010
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ type: :runtime
123
+ prerelease: false
124
+ version_requirements: *2152083940
167
125
  description: Ruby interface to the joyent cloud API
168
126
  email: ben.wyrosdick@gmail.com
169
- executables:
127
+ executables:
170
128
  - joyent
171
129
  extensions: []
172
-
173
- extra_rdoc_files:
130
+ extra_rdoc_files:
174
131
  - LICENSE.txt
175
132
  - README.rdoc
176
- files:
133
+ files:
177
134
  - .document
178
135
  - Gemfile
179
136
  - Gemfile.lock
@@ -189,6 +146,8 @@ files:
189
146
  - lib/joyent/datacenters.rb
190
147
  - lib/joyent/dataset.rb
191
148
  - lib/joyent/datasets.rb
149
+ - lib/joyent/key.rb
150
+ - lib/joyent/keys.rb
192
151
  - lib/joyent/machine.rb
193
152
  - lib/joyent/machines.rb
194
153
  - lib/joyent/package.rb
@@ -197,37 +156,31 @@ files:
197
156
  - test/test_joyent.rb
198
157
  has_rdoc: true
199
158
  homepage: http://github.com/mongohq/joyent
200
- licenses:
159
+ licenses:
201
160
  - MIT
202
161
  post_install_message:
203
162
  rdoc_options: []
204
-
205
- require_paths:
163
+ require_paths:
206
164
  - lib
207
- required_ruby_version: !ruby/object:Gem::Requirement
165
+ required_ruby_version: !ruby/object:Gem::Requirement
208
166
  none: false
209
- requirements:
210
- - - ">="
211
- - !ruby/object:Gem::Version
212
- hash: 3
213
- segments:
167
+ requirements:
168
+ - - ! '>='
169
+ - !ruby/object:Gem::Version
170
+ version: '0'
171
+ segments:
214
172
  - 0
215
- version: "0"
216
- required_rubygems_version: !ruby/object:Gem::Requirement
173
+ hash: 2383781494508247953
174
+ required_rubygems_version: !ruby/object:Gem::Requirement
217
175
  none: false
218
- requirements:
219
- - - ">="
220
- - !ruby/object:Gem::Version
221
- hash: 3
222
- segments:
223
- - 0
224
- version: "0"
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
225
180
  requirements: []
226
-
227
181
  rubyforge_project:
228
- rubygems_version: 1.3.7
182
+ rubygems_version: 1.6.2
229
183
  signing_key:
230
184
  specification_version: 3
231
185
  summary: Ruby interface to the joyent cloud API
232
186
  test_files: []
233
-