fog-oraclecloud 0.1.11 → 0.1.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9c2dc92beba08b205fe11d1feafdbbfef60d966c
4
- data.tar.gz: 2945d61da09d730a8ed125ca3fda8414fb75643a
3
+ metadata.gz: 40ac334d431df46adddc51157496f18855c1fffc
4
+ data.tar.gz: c095bd4efaaa18969bf2cd199b17a50a01b6fd00
5
5
  SHA512:
6
- metadata.gz: c69b759119682368a25e3e5e92a03904066405a352e695637babe693ba7b6e39267d93519dd10a56c278e1658e538de466070cf3e81c1ea2eb259a3cf02088d4
7
- data.tar.gz: 2ff5fb6fe6fe9e028234840d4eb144e71f703fb1c0f6e36f75d188b0099d7e598fe7335f6b7e74589e877a19699668eba10f5ed7a3b71f69f5cbc586b24beb7b
6
+ metadata.gz: 40f8369ed1c352d7f01aa58049d3f01cc9c6de10003ce33d561b4b6c85031f52d3cc6e721e6f2c4abc3db175961bfa62a1d5489f8ea3f7e2e26c2fcf7381fb92
7
+ data.tar.gz: 1e1f14e46d845209d6e9afa6876a7547b55a81dce4539c43e92baebc546b787a140d1b9ab0c55e0554985df4656f237710ddede63d7237ce131df47157676e37
@@ -16,6 +16,10 @@ module Fog
16
16
  request :get_instance
17
17
  request :delete_instance
18
18
  request :list_servers
19
+ request :get_server
20
+ request :scale_out_a_cluster
21
+ request :scale_in_a_cluster
22
+ request :scale_a_node
19
23
 
20
24
  class Real
21
25
 
@@ -92,6 +96,7 @@ module Fog
92
96
  @data ||= {
93
97
  :instances => {},
94
98
  :servers => {},
99
+ :maintenance_at => {},
95
100
  :deleted_at => {},
96
101
  :created_at => {}
97
102
  }
@@ -123,14 +123,6 @@ module Fog
123
123
  end
124
124
  end
125
125
 
126
- def num_nodes=(value)
127
- if value.nil? then value = 1 end
128
- if [1, 2, 4, 8].include? value.to_i then
129
- attributes[:num_nodes] = value.to_i
130
- else
131
- raise ArgumentError, "Invalid server count (#{value}). Valid values - 1, 2, 4 or 8"
132
- end
133
- end
134
126
 
135
127
  def shape=(value)
136
128
  if %w(oc3 oc4 oc5 oc6 oc1m oc2m oc3m oc4m).include? value then
@@ -140,7 +132,14 @@ module Fog
140
132
  end
141
133
  end
142
134
 
143
-
135
+ def num_nodes=(value)
136
+ if value.nil? then value = 1 end
137
+ if value.to_i.is_a? Integer then
138
+ attributes[:num_nodes] = value.to_i
139
+ else
140
+ raise ArgumentError, "Invalid server count (#{value}). Valid values - 1, 2, 4 or 8"
141
+ end
142
+ end
144
143
 
145
144
  def initialize(attributes={})
146
145
  level ||= 'PAAS'
@@ -176,6 +175,11 @@ module Fog
176
175
  service.delete_instance(service_name, dba_name, dba_password, :force_delete => force_delete).body
177
176
  end
178
177
 
178
+ def scale_out_a_cluster(cluster_name, create_cluster_if_missing)
179
+ requires :service_name
180
+ service.scale_out_a_cluster(service_name, cluster_name, create_cluster_if_missing).body
181
+ end
182
+
179
183
  private
180
184
 
181
185
  def create
@@ -7,19 +7,55 @@ module Fog
7
7
  identity :name
8
8
 
9
9
  attribute :cluster_name, :aliases=>'clusterName'
10
+ attribute :job_id, :aliases=>'jobId'
10
11
  attribute :name
11
12
  attribute :shape
12
13
  attribute :node_type, :aliases=>'nodeType'
13
- attribute :is_admin, :aliases=>'is_admin'
14
+ attribute :is_admin, :aliases=>'isAdmin'
14
15
  attribute :hostname
15
16
  attribute :status
16
- attribute :reserved_ip, :aliases=>'reserved_ip'
17
+ attribute :reserved_ip, :aliases=>'reservedIp'
18
+ attribute :reserved_ipaddress, :aliases=>'reservedIpAddress'
19
+ attribute :reserved_ipname, :aliases=>'reservedIpName'
17
20
  attribute :storage_allocated, :aliases=>'storageAllocated'
18
21
  attribute :creation_date, :aliases=>'creationDate'
22
+ attribute :service_name
19
23
 
20
24
  def ip_addr
21
25
  reserved_ip.blank? ? hostname : reserved_ip
22
26
  end
27
+
28
+ def ready?
29
+ status == "Ready"
30
+ end
31
+
32
+ def scale(shape)
33
+ if !%w(oc3 oc4 oc5 oc6 oc1m oc2m oc3m oc4m).include? shape then
34
+ raise ArgumentError, "Invalid Shape. Valid values - oc3, oc4, oc5, oc6, oc1m, oc2m, oc3m or oc4m"
35
+ end
36
+ service.scale_a_node(service_name, name, :shape=>shape)
37
+ end
38
+
39
+ def scale_in_a_cluster
40
+ requires :service_name, :identity
41
+ service.scale_in_a_cluster(service_name, identity)
42
+ end
43
+
44
+ def reload
45
+ requires :identity, :service_name
46
+
47
+ data = begin
48
+ collection.get(service_name, identity)
49
+ rescue Excon::Errors::SocketError
50
+ nil
51
+ end
52
+
53
+ return unless data
54
+
55
+ new_attributes = data.attributes
56
+ merge_attributes(new_attributes)
57
+ self
58
+ end
23
59
  end
24
60
  end
25
61
  end
@@ -9,8 +9,16 @@ module Fog
9
9
 
10
10
  def all(service_name)
11
11
  data = service.list_servers(service_name).body['servers']
12
+ data.each { |s| s['service_name'] = service_name }
12
13
  load(data)
13
14
  end
15
+
16
+ def get(service_name, server_name)
17
+ data = service.get_server(service_name, server_name).body['servers'].first
18
+ data['service_name'] = service_name
19
+ new(data)
20
+ end
21
+
14
22
  end
15
23
  end
16
24
  end
@@ -75,7 +75,8 @@ module Fog
75
75
  "storageAllocated": 74752,
76
76
  "creationDate": Time.now.strftime('%Y-%b-%dT%H:%M:%S')
77
77
  }
78
- self.data[:servers][data['serviceName']] = [server]
78
+ self.data[:servers][data['serviceName']] = {}
79
+ self.data[:servers][data['serviceName']][server[:name]] = server
79
80
 
80
81
  response.status = 202
81
82
  response
@@ -0,0 +1,43 @@
1
+ module Fog
2
+ module OracleCloud
3
+ class Java
4
+ class Real
5
+
6
+ def get_server(service_name, server_name)
7
+ response = request(
8
+ :expects => 200,
9
+ :method => 'GET',
10
+ :path => "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/servers/#{server_name}"
11
+ )
12
+ response
13
+ end
14
+ end
15
+
16
+ class Mock
17
+ def get_server(service_name, server_name)
18
+ response = Excon::Response.new
19
+
20
+ if server = self.data[:servers][service_name][server_name]
21
+ case server[:status]
22
+ when 'Maintenance'
23
+ info = self.data[:maintenance_at][server_name]
24
+ if Time.now - info['time'] >= Fog::Mock.delay
25
+ self.data[:servers][service_name][server_name][:status] = 'Ready'
26
+ self.data[:servers][service_name][server_name][info['attribute']] = info['value']
27
+ self.data[:maintenance_at].delete(server_name)
28
+ end
29
+ end
30
+
31
+ response.status = 200
32
+ response.body = {
33
+ 'servers' => self.data[:servers][service_name].values
34
+ }
35
+ response
36
+ else
37
+ raise Fog::OracleCloud::Java::NotFound.new("Java Server #{name} does not exist");
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -19,7 +19,7 @@ module Fog
19
19
  servers = self.data[:servers][db_name]
20
20
 
21
21
  response.body = {
22
- 'servers' => servers
22
+ 'servers' => servers.values
23
23
  }
24
24
 
25
25
  response
@@ -0,0 +1,46 @@
1
+ module Fog
2
+ module OracleCloud
3
+ class Java
4
+ class Real
5
+
6
+ def scale_a_node(service_name, server_name, options={})
7
+
8
+ path = "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/#{server_name}"
9
+ body_data = {
10
+ 'shape' => options[:shape],
11
+ 'additionalStorage' => options[:additionalStorage],
12
+ 'ignoreManagedServerHeapError' => options[:ignoreManagedServerHeapError],
13
+ 'scalingVolume' => options[:scalingVolume]
14
+ }
15
+ body_data = body_data.reject {|key, value| value.nil?}
16
+
17
+ response = request(
18
+ :expects => 202,
19
+ :method => 'PUT',
20
+ :path => path,
21
+ :body => Fog::JSON.encode(body_data)
22
+ )
23
+ response
24
+ end
25
+ end
26
+
27
+ class Mock
28
+ def scale_a_node(service_name, server_name, options={})
29
+ response = Excon::Response.new
30
+
31
+ response.status = 202
32
+ self.data[:servers][service_name][server_name][:status] = 'Ready'
33
+ self.data[:servers][service_name][server_name][:shape] = options[:shape]
34
+ response.body = {
35
+ "status" => "New",
36
+ "details" => {
37
+ "message" => "scaleup.job.submitted",
38
+ "jobId" => rand(10000).to_s
39
+ }
40
+ }
41
+ response
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,36 @@
1
+ module Fog
2
+ module OracleCloud
3
+ class Java
4
+ class Real
5
+
6
+ def scale_in_a_cluster(service_name, server_name)
7
+
8
+ path = "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/servers/#{server_name}"
9
+
10
+ response = request(
11
+ :expects => 202,
12
+ :method => 'DELETE',
13
+ :path => path
14
+ )
15
+ response
16
+ end
17
+ end
18
+
19
+ class Mock
20
+ def scale_in_a_cluster(service_name, server_name)
21
+ response = Excon::Response.new
22
+
23
+ response.status = 202
24
+ response.body = {
25
+ "status" => "New",
26
+ "details" => {
27
+ "message" => "JAAS-SCALING-044: Scaling in Job (ID: 20) server name [ExampleI_server_4] submitted for service [ExampleInstance]",
28
+ "jobId" => "20"
29
+ }
30
+ }
31
+ response
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ module Fog
2
+ module OracleCloud
3
+ class Java
4
+ class Real
5
+
6
+ def scale_out_a_cluster(service_name, cluster_name, create_cluster_if_missing)
7
+
8
+ path = "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/servers/#{cluster_name}"
9
+ if create_cluster_if_missing then
10
+ path = "#{path}?createClusterIfMissing=true"
11
+ end
12
+
13
+ response = request(
14
+ :expects => 202,
15
+ :method => 'POST',
16
+ :path => path
17
+ )
18
+ response
19
+ end
20
+ end
21
+
22
+ class Mock
23
+ def scale_out_a_cluster(service_name, cluster_name, create_cluster_if_missing)
24
+ response = Excon::Response.new
25
+
26
+ response.status = 202
27
+ response.body = {
28
+ "status" => "New",
29
+ "details" => {
30
+ "message" => "JASS-SCALING-037: Scale out Job (ID: 17) for service [ExampleInstance] in cluster [ExampleI_cluster] submitted",
31
+ "jobId" => "17"
32
+ }
33
+ }
34
+ response
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module OracleCloud
3
- VERSION = "0.1.11"
3
+ VERSION = "0.1.12"
4
4
  end
5
5
  end
@@ -56,6 +56,45 @@ Shindo.tests('Fog::Java[oraclecloud] | java requests', 'java') do
56
56
  end
57
57
  end
58
58
 
59
+ tests('test jcs scaling ') do
60
+ scale_out_server_name = 'TestWLS_server_1'
61
+ test_service_name = 'TestWLS'
62
+
63
+ test "scale out a cluster" do
64
+ instance = Fog::OracleCloud[:java].instances.get(test_service_name)
65
+ instance.scale_out_a_cluster('testcluster',false)
66
+ Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? }
67
+ Fog::OracleCloud[:java].instances.get(test_service_name).ready?
68
+ end
69
+
70
+ test('get server') do
71
+ instance = Fog::OracleCloud[:java].instances.get(test_service_name)
72
+ instance.ready?
73
+ server = instance.servers.get(test_service_name,scale_out_server_name)
74
+ server.ready?
75
+ end
76
+
77
+ test "scale a node" do
78
+ instance = Fog::OracleCloud[:java].instances.get(test_service_name)
79
+ instance.ready?
80
+ server = instance.servers.get(test_service_name,scale_out_server_name)
81
+ server.scale('oc4')
82
+ Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? }
83
+ server = instance.servers.get(test_service_name,scale_out_server_name)
84
+ server.ready?
85
+ server.shape == 'oc4'
86
+ end
87
+
88
+ test "scale in a cluster" do
89
+ instance = Fog::OracleCloud[:java].instances.get(test_service_name)
90
+ instance.ready?
91
+ instance.servers.get(test_service_name,scale_out_server_name).scale_in_a_cluster
92
+ Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? }
93
+ Fog::OracleCloud[:java].instances.get(test_service_name).ready?
94
+ end
95
+
96
+ end
97
+
59
98
  tests("#java-delete", "create") do
60
99
  instance = Fog::OracleCloud[:java].instances.get('TestWLS')
61
100
  instance.dba_name = 'Admin',
@@ -66,4 +105,6 @@ Shindo.tests('Fog::Java[oraclecloud] | java requests', 'java') do
66
105
  instance.wait_for { stopped? }
67
106
  end
68
107
  end
108
+
109
+
69
110
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-oraclecloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.11
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Nation
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-30 00:00:00.000000000 Z
11
+ date: 2016-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -245,6 +245,9 @@ files:
245
245
  - lib/fog/oraclecloud/requests/java/get_server.rb
246
246
  - lib/fog/oraclecloud/requests/java/list_instances.rb
247
247
  - lib/fog/oraclecloud/requests/java/list_servers.rb
248
+ - lib/fog/oraclecloud/requests/java/scale_a_node.rb
249
+ - lib/fog/oraclecloud/requests/java/scale_in_a_cluster.rb
250
+ - lib/fog/oraclecloud/requests/java/scale_out_a_cluster.rb
248
251
  - lib/fog/oraclecloud/requests/soa/create_instance.rb
249
252
  - lib/fog/oraclecloud/requests/soa/delete_instance.rb
250
253
  - lib/fog/oraclecloud/requests/soa/get_instance.rb