# File lib/fog/ecloud/requests/compute/node_service_create.rb, line 45
        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