megam_api 0.19 → 0.20

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4ce34e26cf345435dd7f7525248d06e6f39f8ce5
4
- data.tar.gz: fe0189ff7e1b6c6150d9dba00e247f3e0037dfed
3
+ metadata.gz: a88d33222ae6a6df77e081ea71bf5ba49fe222fc
4
+ data.tar.gz: 9e41197340f0bd0a92123ae61c74889d9d234438
5
5
  SHA512:
6
- metadata.gz: 7d68e3d04b97e4de2aeab4aacd0f772f4fafdc95ba9a16d1d9244820d9ff73e81ec4ba903766ccb96c4774ee998827474e34b6c98d39faf27855079fdc6032a9
7
- data.tar.gz: d2d5c151fae29057a4e7ebd576e562036e1b0600836ca2019f6070754a013618607bdef5129bbc67f1da0d0142c197e51f97b3b64ce7f34bb15951179ae31004
6
+ metadata.gz: 45805bf649222838c7e10a1cdad1400699381c176278a421e45d801d835cafd5de4d8d4fafd4cbc46a34d884bfac6b739ba012a20530238f1e53e6cc2fe2d3da
7
+ data.tar.gz: f7247aa053f5100e4f0c794f191b3d1ab6558052d8373ada907c1a5b6c46a944db00104e2a4c631d4b4da77ad4fafd997746b0ae23138692c660843973559694
data/lib/megam/api.rb CHANGED
@@ -19,6 +19,7 @@ require "megam/api/version"
19
19
  require "megam/api/login"
20
20
  require "megam/api/accounts"
21
21
  require "megam/api/requests"
22
+ require "megam/api/app_requests"
22
23
  require "megam/api/predef_clouds"
23
24
  require "megam/api/cloud_tool_settings"
24
25
  require "megam/api/sshkeys"
@@ -63,6 +64,8 @@ require "megam/core/assembly"
63
64
  require "megam/core/assembly_collection"
64
65
  require "megam/core/components"
65
66
  require "megam/core/components_collection"
67
+ require "megam/core/app_request"
68
+ require "megam/core/app_request_collection"
66
69
 
67
70
 
68
71
 
@@ -0,0 +1,16 @@
1
+ module Megam
2
+ class API
3
+
4
+ def post_apprequest(new_req)
5
+ @options = {:path => '/apprequests/content',
6
+ :body => Megam::JSONCompat.to_json(new_req)}.merge(@options)
7
+
8
+ request(
9
+ :expects => 201,
10
+ :method => :post,
11
+ :body => @options[:body]
12
+ )
13
+ end
14
+
15
+ end
16
+ end
@@ -1,5 +1,5 @@
1
1
  module Megam
2
2
  class API
3
- VERSION = "0.19"
3
+ VERSION = "0.20"
4
4
  end
5
5
  end
@@ -0,0 +1,164 @@
1
+ # Copyright:: Copyright (c) 2012, 2014 Megam Systems
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ module Megam
17
+ class AppRequest < Megam::ServerAPI
18
+ def initialize(email=nil, api_key=nil)
19
+ @id = nil
20
+ @app_id = nil
21
+ @app_name = nil
22
+ @action = nil
23
+ @some_msg = {}
24
+ @created_at = nil
25
+ super(email, api_key)
26
+ end
27
+
28
+ def app_request
29
+ self
30
+ end
31
+
32
+
33
+ def id(arg=nil)
34
+ if arg != nil
35
+ @id = arg
36
+ else
37
+ @id
38
+ end
39
+ end
40
+
41
+ def app_id(arg=nil)
42
+ if arg != nil
43
+ @app_id = arg
44
+ else
45
+ @app_id
46
+ end
47
+ end
48
+
49
+ def app_name(arg=nil)
50
+ if arg != nil
51
+ @app_name = arg
52
+ else
53
+ @app_name
54
+ end
55
+ end
56
+
57
+ def action(arg=nil)
58
+ if arg != nil
59
+ @action = arg
60
+ else
61
+ @action
62
+ end
63
+ end
64
+
65
+
66
+ def created_at(arg=nil)
67
+ if arg != nil
68
+ @created_at = arg
69
+ else
70
+ @created_at
71
+ end
72
+ end
73
+
74
+ def some_msg(arg=nil)
75
+ if arg != nil
76
+ @some_msg = arg
77
+ else
78
+ @some_msg
79
+ end
80
+ end
81
+
82
+ def error?
83
+ crocked = true if (some_msg.has_key?(:msg_type) && some_msg[:msg_type] == "error")
84
+ end
85
+
86
+ # Transform the ruby obj -> to a Hash
87
+ def to_hash
88
+ index_hash = Hash.new
89
+ index_hash["json_claz"] = self.class.name
90
+ index_hash["id"] = id
91
+ index_hash["app_id"] = app_id
92
+ index_hash["app_name"] = app_name
93
+ index_hash["action"] = action
94
+ index_hash["created_at"] = created_at
95
+ index_hash
96
+ end
97
+
98
+ # Serialize this object as a hash: called from JsonCompat.
99
+ # Verify if this called from JsonCompat during testing.
100
+ def to_json(*a)
101
+ for_json.to_json(*a)
102
+ end
103
+
104
+ def for_json
105
+ result = {
106
+ "id" => id,
107
+ "app_id" => app_id,
108
+ "app_name" => app_name,
109
+ "action" => action,
110
+ "created_at" => created_at
111
+ }
112
+ result
113
+ end
114
+
115
+ #
116
+ def self.json_create(o)
117
+ node = new
118
+ node.id(o["id"]) if o.has_key?("id")
119
+ node.app_id(o["app_id"]) if o.has_key?("app_id")
120
+ node.app_name(o["app_name"]) if o.has_key?("app_name")
121
+ node.action(o["action"]) if o.has_key?("action")
122
+ node.created_at(o["created_at"]) if o.has_key?("created_at")
123
+ #success or error
124
+ node.some_msg[:code] = o["code"] if o.has_key?("code")
125
+ node.some_msg[:msg_type] = o["msg_type"] if o.has_key?("msg_type")
126
+ node.some_msg[:msg]= o["msg"] if o.has_key?("msg")
127
+ node.some_msg[:links] = o["links"] if o.has_key?("links")
128
+ node
129
+ end
130
+
131
+ def self.from_hash(o,tmp_email=nil, tmp_api_key=nil)
132
+ node = self.new(tmp_email, tmp_api_key)
133
+ node.from_hash(o)
134
+ node
135
+ end
136
+
137
+ def from_hash(o)
138
+ @id = o[:id] if o.has_key?(:id)
139
+ @app_id = o[:app_id] if o.has_key?(:app_id)
140
+ @app_name = o[:app_name] if o.has_key?(:app_name)
141
+ @action = o[:action] if o.has_key?(:action)
142
+ @created_at = o[:created_at] if o.has_key?(:created_at)
143
+ self
144
+ end
145
+
146
+
147
+ def self.create(o,tmp_email=nil, tmp_api_key=nil)
148
+ acct = from_hash(o,tmp_email, tmp_api_key)
149
+ acct.create
150
+ end
151
+
152
+ # Create the node via the REST API
153
+ def create
154
+ megam_rest.post_apprequest(to_hash)
155
+ end
156
+
157
+
158
+ def to_s
159
+ Megam::Stuff.styled_hash(to_hash)
160
+ #"---> Megam::Account:[error=#{error?}]\n"+
161
+ end
162
+
163
+ end
164
+ end
@@ -0,0 +1,145 @@
1
+ # Copyright:: Copyright (c) 2012, 2014 Megam Systems
2
+ # License:: Apache License, Version 2.0
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+ module Megam
17
+ class AppRequestCollection
18
+ include Enumerable
19
+
20
+ attr_reader :iterator
21
+ def initialize
22
+ @apprequests = Array.new
23
+ @apprequests_by_name = Hash.new
24
+ @insert_after_idx = nil
25
+ end
26
+
27
+ def all_requests
28
+ @apprequests
29
+ end
30
+
31
+ def [](index)
32
+ @apprequests[index]
33
+ end
34
+
35
+ def []=(index, arg)
36
+ is_megam_request(arg)
37
+ @apprequests[index] = arg
38
+ @apprequests_by_name[arg.app_id] = index
39
+ end
40
+
41
+ def <<(*args)
42
+ args.flatten.each do |a|
43
+ is_megam_request(a)
44
+ @apprequests << a
45
+ @apprequests_by_name[a.app_id] = @apprequests.length - 1
46
+ end
47
+ self
48
+ end
49
+
50
+ # 'push' is an alias method to <<
51
+ alias_method :push, :<<
52
+
53
+ def insert(request)
54
+ is_megam_request(request)
55
+ if @insert_after_idx
56
+ # in the middle of executing a run, so any requests inserted now should
57
+ # be placed after the most recent addition done by the currently executing
58
+ # request
59
+ @apprequests.insert(@insert_after_idx + 1, request)
60
+ # update name -> location mappings and register new request
61
+ @apprequests_by_name.each_key do |key|
62
+ @apprequests_by_name[key] += 1 if @apprequests_by_name[key] > @insert_after_idx
63
+ end
64
+ @apprequests_by_name[request.app_id] = @insert_after_idx + 1
65
+ @insert_after_idx += 1
66
+ else
67
+ @apprequests << request
68
+ @apprequests_by_name[request.app_id] = @apprequests.length - 1
69
+ end
70
+ end
71
+
72
+ def each
73
+ @apprequests.each do |request|
74
+ yield request
75
+ end
76
+ end
77
+
78
+ def each_index
79
+ @apprequests.each_index do |i|
80
+ yield i
81
+ end
82
+ end
83
+
84
+ def empty?
85
+ @apprequests.empty?
86
+ end
87
+
88
+ def lookup(request)
89
+ lookup_by = nil
90
+ if request.kind_of?(Megam::AppRequest)
91
+ lookup_by = request.app_id
92
+ elsif request.kind_of?(String)
93
+ lookup_by = request
94
+ else
95
+ raise ArgumentError, "Must pass a Megam::AppRequest or String to lookup"
96
+ end
97
+ res = @apprequests_by_name[lookup_by]
98
+ unless res
99
+ raise ArgumentError, "Cannot find a request matching #{lookup_by} (did you define it first?)"
100
+ end
101
+ @apprequests[res]
102
+ end
103
+
104
+ # Transform the ruby obj -> to a Hash
105
+ def to_hash
106
+ index_hash = Hash.new
107
+ self.each do |request|
108
+ index_hash[request.app_id] = request.to_s
109
+ end
110
+ index_hash
111
+ end
112
+
113
+ # Serialize this object as a hash: called from JsonCompat.
114
+ # Verify if this called from JsonCompat during testing.
115
+ def to_json(*a)
116
+ for_json.to_json(*a)
117
+ end
118
+
119
+
120
+ def self.json_create(o)
121
+ collection = self.new()
122
+ o["results"].each do |requests_list|
123
+ requests_array = requests_list.kind_of?(Array) ? requests_list : [ requests_list ]
124
+ requests_array.each do |request|
125
+ collection.insert(request)
126
+ end
127
+ end
128
+ collection
129
+ end
130
+
131
+ private
132
+
133
+ def is_megam_request(arg)
134
+ unless arg.kind_of?(Megam::AppRequest)
135
+ raise ArgumentError, "Members must be Megam::AppRequest's"
136
+ end
137
+ true
138
+ end
139
+
140
+ def to_s
141
+ Megam::Stuff.styled_hash(to_hash)
142
+ end
143
+
144
+ end
145
+ end
@@ -35,6 +35,8 @@ module Megam
35
35
  MEGAM_REQUESTCOLLECTION = "Megam::RequestCollection".freeze
36
36
  MEGAM_ORGANIZATION = "Megam::Organizations".freeze
37
37
  MEGAM_DOMAIN = "Megam::Domains".freeze
38
+ MEGAM_APPREQUEST = "Megam::AppRequest".freeze
39
+ MEGAM_APPREQUESTCOLLECTION = "Megam::AppRequestCollection".freeze
38
40
 
39
41
  MEGAM_PREDEFCLOUD = "Megam::PredefCloud".freeze
40
42
  MEGAM_PREDEFCLOUDCOLLECTION = "Megam::PredefCloudCollection".freeze
@@ -171,6 +173,10 @@ module Megam
171
173
  Megam::CSARCollection
172
174
  when MEGAM_DOMAIN
173
175
  Megam::Domains
176
+ when MEGAM_APPREQUEST
177
+ Megam::AppRequest
178
+ when MEGAM_APPREQUESTCOLLECTION
179
+ Megam::AppRequestCollection
174
180
  else
175
181
  raise JSON::ParserError, "Unsupported `json_class` type '#{json_class}'"
176
182
  end
@@ -0,0 +1,18 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/test_helper")
2
+
3
+ class TestApps < MiniTest::Unit::TestCase
4
+
5
+ @@tmp_hash = {
6
+ "app_id" => "ASM1136003656177549312",
7
+ "app_name" => "HermanWard.megam.co", #APP or Bolt
8
+ "action" => "start"
9
+ }
10
+
11
+
12
+ def test_request_app_start
13
+ response = megams.post_request(@@tmp_hash)
14
+ assert_equal(201, response.status)
15
+ end
16
+ #=end
17
+
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: megam_api
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.19'
4
+ version: '0.20'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kishorekumar Neelamegam, Thomas Alrin, Subash Sethurajan, Rajthilak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-16 00:00:00.000000000 Z
11
+ date: 2014-10-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
@@ -130,6 +130,7 @@ files:
130
130
  - lib/certs/cacert.pem
131
131
  - lib/megam/api.rb
132
132
  - lib/megam/api/accounts.rb
133
+ - lib/megam/api/app_requests.rb
133
134
  - lib/megam/api/assemblies.rb
134
135
  - lib/megam/api/assembly.rb
135
136
  - lib/megam/api/cloud_tool_settings.rb
@@ -146,6 +147,8 @@ files:
146
147
  - lib/megam/api/sshkeys.rb
147
148
  - lib/megam/api/version.rb
148
149
  - lib/megam/core/account.rb
150
+ - lib/megam/core/app_request.rb
151
+ - lib/megam/core/app_request_collection.rb
149
152
  - lib/megam/core/assemblies.rb
150
153
  - lib/megam/core/assemblies_collection.rb
151
154
  - lib/megam/core/assembly.rb
@@ -182,6 +185,7 @@ files:
182
185
  - lib/megam_api.rb
183
186
  - megam_api.gemspec
184
187
  - test/test_accounts.rb
188
+ - test/test_app_requests.rb
185
189
  - test/test_assemblies.rb
186
190
  - test/test_assembly.rb
187
191
  - test/test_cloudtoolsettings.rb