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