lib/azure/sql_database_management/serialization.rb in azure-0.6.0 vs lib/azure/sql_database_management/serialization.rb in azure-0.6.1
- old
+ new
@@ -1,90 +1,111 @@
-#-------------------------------------------------------------------------
-# Copyright 2013 Microsoft Open Technologies, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#--------------------------------------------------------------------------
-require 'azure/sql_database_management/sql_database'
-
-module Azure
- module SqlDatabaseManagement
- module Serialization
-
- def self.database_to_xml(login, password, location)
- builder = Nokogiri::XML::Builder.new do |xml|
- xml.Server('xmlns'=>'http://schemas.microsoft.com/sqlazure/2010/12/') {
- xml.AdministratorLogin login
- xml.AdministratorLoginPassword password
- xml.Location location
- }
- end
- builder.doc.to_xml
- end
-
- def self.databases_from_xml(databasesXML)
- databases = []
- databases_servicesXML = databasesXML.css('Servers Server')
- databases_servicesXML.each do |database_xml|
- database = SqlDatabase.new
- database.name = xml_content(database_xml, 'Name')
- database.administrator_login = xml_content(database_xml, 'AdministratorLogin')
- database.location = xml_content(database_xml, 'Location')
- database.feature_name = xml_content(database_xml, 'Features Feature Name')
- database.feature_value = xml_content(database_xml, 'Features Feature Value')
- databases << database
- end
- databases.compact
- end
-
- def self.server_name_from_xml(response_xml, login, location)
- server_name = xml_content(response_xml, 'ServerName')
- SqlDatabase.new do |db|
- db.name = server_name
- db.location = location
- db.administrator_login = login
- end
- end
-
- def self.reset_password_to_xml(password)
- builder = Nokogiri::XML::Builder.new do |xml|
- xml.AdministratorLoginPassword(password, {'xmlns'=>'http://schemas.microsoft.com/sqlazure/2010/12/'})
- end
- builder.doc.to_xml
- end
-
- def self.firewall_rule_to_xml(options)
- builder = Nokogiri::XML::Builder.new do |xml|
- xml.FirewallRule('xmlns'=>'http://schemas.microsoft.com/sqlazure/2010/12/',
- 'xmlns:xsi'=>'http://www.w3.org/2001/XMLSchema-instance',
- 'xsi:schemaLocation'=>'http://schemas.microsoft.com/sqlazure/2010/12/ FirewallRule.xsd') {
- xml.StartIpAddress options[:start_ip_address]
- xml.EndIpAddress options[:end_ip_address]
- }
- end
- builder.doc.to_xml
- end
-
- def self.database_firewall_from_xml(response_xml)
- firewalls = []
- database_firewallXML = response_xml.css('FirewallRules FirewallRule')
- database_firewallXML.each do |firewall_xml|
- firewall = { :rule => xml_content(firewall_xml, 'Name'),
- :start_ip_address => xml_content(firewall_xml, 'StartIpAddress'),
- :end_ip_address => xml_content(firewall_xml, 'EndIpAddress')
- }
- firewalls << firewall
- end
- firewalls.compact
- end
-
- end
- end
-end
+#-------------------------------------------------------------------------
+# Copyright 2013 Microsoft Open Technologies, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#--------------------------------------------------------------------------
+require 'azure/sql_database_management/sql_database'
+
+module Azure
+ module SqlDatabaseManagement
+ module Serialization
+
+ def self.database_to_xml(login, password, location)
+ builder = Nokogiri::XML::Builder.new do |xml|
+ xml.Server('xmlns'=>'http://schemas.microsoft.com/sqlazure/2010/12/') {
+ xml.AdministratorLogin login
+ xml.AdministratorLoginPassword password
+ xml.Location location
+ }
+ end
+ builder.doc.to_xml
+ end
+
+ def self.databases_from_xml(databasesXML)
+ databases = []
+ databases_servicesXML = databasesXML.css('Servers Server')
+ databases_servicesXML.each do |database_xml|
+ database = SqlDatabase.new
+ database.name = xml_content(database_xml, 'Name')
+ database.administrator_login = xml_content(database_xml, 'AdministratorLogin')
+ database.location = xml_content(database_xml, 'Location')
+ database.feature_name = xml_content(database_xml, 'Features Feature Name')
+ database.feature_value = xml_content(database_xml, 'Features Feature Value')
+ databases << database
+ end
+ databases.compact
+ end
+
+ def self.server_name_from_xml(response_xml, login, location)
+ server_name = xml_content(response_xml, 'ServerName')
+ SqlDatabase.new do |db|
+ db.name = server_name
+ db.location = location
+ db.administrator_login = login
+ end
+ end
+
+ def self.reset_password_to_xml(password)
+ builder = Nokogiri::XML::Builder.new do |xml|
+ xml.AdministratorLoginPassword(password, {'xmlns'=>'http://schemas.microsoft.com/sqlazure/2010/12/'})
+ end
+ builder.doc.to_xml
+ end
+
+ def self.firewall_rule_to_xml(options)
+ # Need to revisit and implement RDFE request XML.
+ # Currently Azure is throwing Internal Server Error when executing the
+ # API
+ builder = Nokogiri::XML::Builder.new do |xml|
+ xml.FirewallRule('xmlns'=>'http://schemas.microsoft.com/sqlazure/2010/12/',
+ 'xmlns:xsi'=>'http://www.w3.org/2001/XMLSchema-instance',
+ 'xsi:schemaLocation'=>'http://schemas.microsoft.com/sqlazure/2010/12/ FirewallRule.xsd') {
+ xml.StartIpAddress options[:start_ip_address]
+ xml.EndIpAddress options[:end_ip_address]
+ }
+ end
+ builder.doc.to_xml
+ end
+
+ def self.database_firewall_from_xml(response_xml)
+ firewalls = []
+ if Azure.config.sql_database_authentication_mode == :sql_server
+ database_firewallXML = response_xml.css('FirewallRules FirewallRule')
+ database_firewallXML.each do |firewall_xml|
+ firewall = {
+ :rule => xml_content(firewall_xml, 'Name'),
+ :start_ip_address => xml_content(firewall_xml, 'StartIpAddress'),
+ :end_ip_address => xml_content(firewall_xml, 'EndIpAddress')
+ }
+ firewalls << firewall
+ end
+ else
+ service_resources = response_xml.css(
+ 'ServiceResources ServiceResource'
+ )
+ service_resources.each do |resource|
+ type = xml_content(resource, 'Type')
+ if type == 'Microsoft.SqlAzure.FirewallRule'
+ firewall = {
+ rule: xml_content(resource, 'Name'),
+ start_ip_address: xml_content(resource, 'StartIPAddress'),
+ end_ip_address: xml_content(resource, 'EndIPAddress')
+ }
+ firewalls << firewall
+ end
+ end
+ end
+ firewalls.compact
+ end
+
+ end
+ end
+end