lib/fog/ecloud/requests/compute/node_service_create.rb in fog-1.8.0 vs lib/fog/ecloud/requests/compute/node_service_create.rb in fog-1.9.0
- old
+ new
@@ -38,8 +38,56 @@
xml.Description service_data[:description]
end
end
end
end
+
+ class Mock
+ def node_service_create(service_data)
+ validate_node_service_data(service_data)
+
+ internet_service_id = service_data[:uri].match(/(\d+)/)[1]
+ internet_service = self.data[:internet_services][internet_service_id.to_i].dup
+ network_id, ip_address_name = service_data[:ip_address].match(/\/(\d+)\/(.*)$/).captures
+ network = self.data[:networks][network_id.to_i]
+ ip_addresses = network[:IpAddresses][:IpAddress]
+ ip_addresses = ip_addresses.is_a?(Array) ? ip_addresses : [ip_addresses]
+ ip_address = ip_addresses.detect { |ip| ip[:name] == ip_address_name }
+
+ service_id = Fog::Mock.random_numbers(6).to_i
+ service = {
+ :href => "/cloudapi/ecloud/nodeservices/#{service_id}",
+ :name => service_data[:name],
+ :type => "application/vnd.tmrk.cloud.nodeService",
+ :Links => {
+ :Link => [
+ Fog::Ecloud.keep(internet_service, :href, :name, :type),
+ ],
+ },
+ :Protocol => service_data[:protocol],
+ :Port => service_data[:port],
+ :Enabled => service_data[:enabled],
+ :Description => service_data[:description],
+ :IpAddress => {
+ :href => ip_address[:href],
+ :name => ip_address[:name],
+ :type => ip_address[:type],
+ :Network => {
+ :href => network[:href],
+ :name => network[:name],
+ :type => network[:type],
+ },
+ },
+ }
+
+ node_service_response = response(:body => service)
+
+ service.merge!(:internet_service => internet_service)
+
+ self.data[:node_services][service_id] = service
+
+ node_service_response
+ end
+ end
end
end
-end
+end