joyent 0.0.3 → 0.0.4

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.
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
-