fog-oraclecloud 0.1.11 → 0.1.12

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