lib/fog/oraclecloud/requests/java/create_instance.rb in fog-oraclecloud-0.1.12 vs lib/fog/oraclecloud/requests/java/create_instance.rb in fog-oraclecloud-0.1.13
- old
+ new
@@ -1,87 +1,156 @@
-module Fog
- module OracleCloud
- class Java
- class Real
-
- def create_instance(config, options)
-
- if !config[:cloudStorageContainer].start_with?("/Storage-")
- config[:cloudStorageContainer] = "/Storage-#{@identity_domain}/#{config[:cloudStorageContainer]}"
- end
-
- config[:parameters] = options.select{|key, value| [:adminPassword, :adminPort, :adminUserName, :backupVolumeSize, :clusterName, :contentPort, :dbaName, :dbaPassword, :dbServiceName, :deploymentChannelPort, :domainMode, :domainName, :domainPartitionCount, :domainVolumeSize, :edition, :ipReservations, :managedServerCount, :msInitialHeapMB, :msJvmArgs, :msMaxHeapMB, :msMaxPermMB, :msPermMb, :nodeManagerPassword, :nodeManagerPort, :nodeManagerUserName, :overwriteMsJvmArgs, :pdbName, :securedAdminPort, :securedContentPort, :shape, :VMsPublicKey].include?(key)}
- config[:parameters].reject! { |key,value| value.nil?}
- config.reject! { |key,value| value.nil?}
- # Currently only support weblogic
- config[:parameters][:type] = "weblogic"
-
- body_data = config
-
- request(
- :method => 'POST',
- :expects => 202,
- :path => "/paas/service/dbcs/api/v1.1/instances/#{@identity_domain}",
- :body => Fog::JSON.encode(body_data),
- #:headers => {
- # 'Content-Type'=>'application/vnd.com.oracle.oracloud.provisioning.Service+json'
- #}
- )
- end
- end
- class Mock
- def create_instance(config, options)
- response = Excon::Response.new
-
- ip = '192.168.1.1'
- data = {
- 'status' => 'In Progress',
- 'compute_site_name' => 'EM002_Z11',
- 'content_url' => "http://#{ip}",
- 'created_by' => @username,
- 'creation_job_id' => Random.rand(100000),
- 'creation_time'=> Time.now.strftime('%Y-%b-%dT%H:%M:%S'),
- 'db_info' => "#{options[:dbServiceName]}:1521/#{options[:pdbName] || 'PDB1'}.#{@identity_domain}.oraclecloud.internal",
- 'deletion_job_id' => 0,
- 'domainMode'=>'DEVELOPMENT',
- 'fmw_control_url'=> "https://#{ip}:#{options[:adminPort] || 7002}/em",
- 'last_modified_time'=> Time.now.strftime('%Y-%b-%dT%H:%M:%S'),
- 'num_ip_reservations'=> 2, # Can't rely on this number in mocking mode
- 'num_nodes'=>options[:managedServerCount],
- 'otd_provisioned'=>options[:provisionOTD] || 'no',
- 'psm_plugin_version'=>"16.3.5-532",
- 'secure_content_url' => "https://#{ip}",
- 'service_type'=>'jaas',
- 'service_uri'=>"#{@region_url}/paas/service/dbcs/api/v1.1/instances/#{@identity_domain}/#{config[:serviceName]}",
- 'wls_admin_url'=> "https://#{ip}:#{options[:adminPort] || 7002}/console",
- 'wls_deployment_channel_port' => options[:deploymentChannelPort] || 9001,
- 'wlsVersion'=>'12.2.1.0.160419'
- }
- .merge(config.select {|key, value| [:serviceName, :description, :level, :subscriptionType].include?(key) })
- .merge(options.select {|key, value| [:clusterName, :dbServiceName, :edition, :shape, :version].include?(key) }).collect{|k,v| [k.to_s, v]}.to_h
-
- if data['clusterName'].nil? then data['clusterName'] = data['serviceName'][0,8] + "_cluster" end
- if data['domainName'].nil? then data['domainName'] = data['serviceName'][0,8] + "_domain" end
- self.data[:instances][config[:serviceName]] = data
- self.data[:created_at][config[:serviceName]] = Time.now
-
- server = {
- "clusterName": data['clusterName'] || data['serviceName'][0,8] + "_cluster",
- "name": "#{data['serviceName'][0,8]}_server_1",
- "shape": data['shape'],
- "nodeType": "WLS",
- "isAdmin": true,
- "hostname": ip,
- "status": "Ready",
- "storageAllocated": 74752,
- "creationDate": Time.now.strftime('%Y-%b-%dT%H:%M:%S')
- }
- self.data[:servers][data['serviceName']] = {}
- self.data[:servers][data['serviceName']][server[:name]] = server
-
- response.status = 202
- response
- end
- end
- end
- end
-end
+module Fog
+ module OracleCloud
+ class Java
+ class Real
+
+ def create_instance(config, options)
+
+ if !config[:cloudStorageContainer].start_with?("/Storage-")
+ config[:cloudStorageContainer] = "/Storage-#{@identity_domain}/#{config[:cloudStorageContainer]}"
+ end
+
+ config[:parameters] = options.select{|key, value| [:adminPassword, :adminPort, :adminUserName, :backupVolumeSize, :clusterName, :contentPort, :dbaName, :dbaPassword, :dbServiceName, :deploymentChannelPort, :domainMode, :domainName, :domainPartitionCount, :domainVolumeSize, :edition, :ipReservations, :managedServerCount, :msInitialHeapMB, :msJvmArgs, :msMaxHeapMB, :msMaxPermMB, :msPermMb, :nodeManagerPassword, :nodeManagerPort, :nodeManagerUserName, :overwriteMsJvmArgs, :pdbName, :securedAdminPort, :securedContentPort, :shape, :VMsPublicKey].include?(key)}
+ config[:parameters].reject! { |key,value| value.nil?}
+ config.reject! { |key,value| value.nil?}
+ # Currently only support weblogic
+ config[:parameters][:type] = "weblogic"
+
+ body_data = config
+
+ request(
+ :method => 'POST',
+ :expects => 202,
+ :path => "/paas/service/dbcs/api/v1.1/instances/#{@identity_domain}",
+ :body => Fog::JSON.encode(body_data),
+ #:headers => {
+ # 'Content-Type'=>'application/vnd.com.oracle.oracloud.provisioning.Service+json'
+ #}
+ )
+ end
+ end
+ class Mock
+ def create_instance(config, options)
+ response = Excon::Response.new
+
+ ip = '192.168.1.1'
+ data = {
+ 'status' => 'In Progress',
+ 'compute_site_name' => 'EM002_Z11',
+ 'content_url' => "http://#{ip}",
+ 'created_by' => @username,
+ 'creation_job_id' => Random.rand(100000),
+ 'creation_time'=> Time.now.strftime('%Y-%b-%dT%H:%M:%S'),
+ 'db_info' => "#{options[:dbServiceName]}:1521/#{options[:pdbName] || 'PDB1'}.#{@identity_domain}.oraclecloud.internal",
+ 'deletion_job_id' => 0,
+ 'domainMode'=>'DEVELOPMENT',
+ 'fmw_control_url'=> "https://#{ip}:#{options[:adminPort] || 7002}/em",
+ 'last_modified_time'=> Time.now.strftime('%Y-%b-%dT%H:%M:%S'),
+ 'num_ip_reservations'=> 2, # Can't rely on this number in mocking mode
+ 'num_nodes'=>options[:managedServerCount],
+ 'otd_provisioned'=>options[:provisionOTD] || 'no',
+ 'psm_plugin_version'=>"16.3.5-532",
+ 'secure_content_url' => "https://#{ip}",
+ 'service_type'=>'jaas',
+ 'service_uri'=>"#{@region_url}/paas/service/dbcs/api/v1.1/instances/#{@identity_domain}/#{config[:serviceName]}",
+ 'wls_admin_url'=> "https://#{ip}:#{options[:adminPort] || 7002}/console",
+ 'wls_deployment_channel_port' => options[:deploymentChannelPort] || 9001,
+ 'wlsVersion'=>'12.2.1.0.160419'
+ }
+ .merge(config.select {|key, value| [:serviceName, :description, :level, :subscriptionType].include?(key) })
+ .merge(options.select {|key, value| [:clusterName, :dbServiceName, :edition, :shape, :version].include?(key) }).collect{|k,v| [k.to_s, v]}.to_h
+
+ if data['clusterName'].nil? then data['clusterName'] = data['serviceName'][0,8] + "_cluster" end
+ if data['domainName'].nil? then data['domainName'] = data['serviceName'][0,8] + "_domain" end
+ self.data[:instances][config[:serviceName]] = data
+ self.data[:created_at][config[:serviceName]] = Time.now
+
+ server = {
+ "clusterName": data['clusterName'] || data['serviceName'][0,8] + "_cluster",
+ "name": "#{data['serviceName'][0,8]}_server_1",
+ "shape": data['shape'],
+ "nodeType": "WLS",
+ "isAdmin": true,
+ "hostname": ip,
+ "status": "Ready",
+ "storageAllocated": 74752,
+ "creationDate": Time.now.strftime('%Y-%b-%dT%H:%M:%S')
+ }
+ self.data[:servers][data['serviceName']] = {}
+ self.data[:servers][data['serviceName']][server[:name]] = server
+
+
+ # Add default access rules
+ access_rules = [{
+ "ruleName" => "sys_ms2db_dblistener",
+ "description"=> "DO NOT MODIFY=> Permit listener connection to database from managed servers",
+ "status"=> "enabled",
+ "source"=> "WLS_MANAGED_SERVER",
+ "destination"=> "dbaas=>nbnws=>DB",
+ "ports"=> "1521",
+ "protocol"=> "tcp",
+ "ruleType"=> "SYSTEM"
+ },{
+ "ruleName"=> "sys_ms2db_ssh",
+ "description"=> "DO NOT MODIFY=> Permit managed servers to ssh to db",
+ "status"=> "enabled",
+ "source"=> "WLS_MANAGED_SERVER",
+ "destination"=> "dbaas=>nbnws=>DB",
+ "port"=> "22",
+ "portocol"=> "tcp",
+ "ruleType"=> "SYSTEM"
+ },{
+ "ruleName"=> "ora_p2admin_ssh",
+ "description"=> "DO NOT MODIFY=> Permit public ssh to admin server",
+ "status"=> "enabled",
+ "source"=> "PUBLIC-INTERNET",
+ "destination"=> "WLS_ADMIN_SERVER",
+ "port"=> "22",
+ "portocol"=> "tcp",
+ "ruleType"=> "DEFAULT"
+ },{
+ "ruleName"=> "ora_p2admin_ahttps",
+ "description"=> "DO NOT MODIFY=> Permit public to https to admin server",
+ "status"=> "enabled",
+ "source"=> "PUBLIC-INTERNET",
+ "destination"=> "WLS_ADMIN_SERVER",
+ "port"=> "7002",
+ "portocol"=> "tcp",
+ "ruleType"=> "DEFAULT"
+ },{
+ "ruleName"=> "sys_infra2admin_ssh",
+ "description"=> "DO NOT MODIFY=> Permit PSM to ssh to admin server",
+ "status"=> "enabled",
+ "source"=> "PAAS-INFRA",
+ "destination"=> "WLS_ADMIN_SERVER",
+ "port"=> "22",
+ "portocol"=> "tcp",
+ "ruleType"=> "DEFAULT"
+ },{
+ "ruleName"=> "ora_p2ms_chttp",
+ "description"=> "Permit http connection to managed servers from public",
+ "status"=> "enabled",
+ "source"=> "PUBLIC-INTERNET",
+ "destination"=> "WLS_ADMIN_SERVER",
+ "port"=> "80",
+ "portocol"=> "tcp",
+ "ruleType"=> "DEFAULT"
+ },{
+ "ruleName"=> "ora_p2ms_chttps",
+ "description"=> "Permit https connection to managed servers from public",
+ "status"=> "enabled",
+ "source"=> "PUBLIC-INTERNET",
+ "destination"=> "WLS_MANAGED_SERVER",
+ "port"=> "443",
+ "portocol"=> "tcp",
+ "ruleType"=> "DEFAULT"
+ }]
+
+ self.data[:access_rules][data['serviceName']] = access_rules
+
+ response.status = 202
+ response
+ end
+ end
+ end
+ end
+end