Permalink
Browse files

Merge pull request #609 from WindowsAzure/dev

8/17 Release
  • Loading branch information...
2 parents ab88dd3 + 8597e70 commit aa2dfd7b0fa7a20f3f35749d6d22868b8b31d7eb @jcookems jcookems committed Aug 18, 2012
Showing with 7,252 additions and 636 deletions.
  1. +8 −3 Defaults.php
  2. +64 −21 README.md
  3. +2 −2 WindowsAzure/Blob/BlobRestProxy.php
  4. +2 −2 WindowsAzure/Blob/Models/BlobBlockType.php
  5. +5 −2 WindowsAzure/Common/Internal/Atom/AtomBase.php
  6. +5 −5 WindowsAzure/Common/Internal/ConnectionStringParser.php
  7. +74 −5 WindowsAzure/Common/Internal/Resources.php
  8. +82 −1 WindowsAzure/Common/Internal/Utilities.php
  9. +1 −30 WindowsAzure/ServiceBus/Models/Action.php
  10. +1 −29 WindowsAzure/ServiceBus/Models/Filter.php
  11. +6 −6 WindowsAzure/ServiceBus/Models/RuleDescription.php
  12. +0 −3 WindowsAzure/ServiceBus/Models/RuleInfo.php
  13. +30 −0 WindowsAzure/ServiceBus/Models/SqlFilter.php
  14. +29 −0 WindowsAzure/ServiceBus/Models/SqlRuleAction.php
  15. +355 −26 WindowsAzure/ServiceManagement/Internal/IServiceManagement.php
  16. +31 −13 WindowsAzure/ServiceManagement/{Models → Internal}/Service.php
  17. +151 −0 WindowsAzure/ServiceManagement/Internal/WindowsAzureService.php
  18. +14 −5 WindowsAzure/ServiceManagement/Models/AffinityGroup.php
  19. +124 −0 WindowsAzure/ServiceManagement/Models/ChangeDeploymentConfigurationOptions.php
  20. +113 −0 WindowsAzure/ServiceManagement/Models/CreateDeploymentOptions.php
  21. +1 −1 WindowsAzure/ServiceManagement/Models/{CreateStorageServiceOptions.php → CreateServiceOptions.php}
  22. +560 −0 WindowsAzure/ServiceManagement/Models/Deployment.php
  23. +61 −0 WindowsAzure/ServiceManagement/Models/DeploymentSlot.php
  24. +61 −0 WindowsAzure/ServiceManagement/Models/DeploymentStatus.php
  25. +2 −14 WindowsAzure/ServiceManagement/Models/GetAffinityGroupPropertiesResult.php
  26. +106 −0 WindowsAzure/ServiceManagement/Models/GetDeploymentOptions.php
  27. +84 −0 WindowsAzure/ServiceManagement/Models/GetDeploymentResult.php
  28. +77 −0 WindowsAzure/ServiceManagement/Models/GetHostedServicePropertiesOptions.php
  29. +87 −0 WindowsAzure/ServiceManagement/Models/GetHostedServicePropertiesResult.php
  30. +4 −101 WindowsAzure/ServiceManagement/Models/GetStorageServicePropertiesResult.php
  31. +115 −0 WindowsAzure/ServiceManagement/Models/HostedService.php
  32. +152 −0 WindowsAzure/ServiceManagement/Models/InputEndpoint.php
  33. +99 −0 WindowsAzure/ServiceManagement/Models/ListHostedServicesResult.php
  34. +5 −16 WindowsAzure/ServiceManagement/Models/ListStorageServicesResult.php
  35. +61 −0 WindowsAzure/ServiceManagement/Models/Mode.php
  36. +125 −0 WindowsAzure/ServiceManagement/Models/Role.php
  37. +341 −0 WindowsAzure/ServiceManagement/Models/RoleInstance.php
  38. +66 −33 WindowsAzure/ServiceManagement/Models/StorageService.php
  39. +1 −1 WindowsAzure/ServiceManagement/Models/{UpdateStorageServiceOptions.php → UpdateServiceOptions.php}
  40. +16 −39 WindowsAzure/ServiceManagement/Models/{ServiceProperties.php → UpgradeDeploymentOptions.php}
  41. +163 −0 WindowsAzure/ServiceManagement/Models/UpgradeStatus.php
  42. +947 −52 WindowsAzure/ServiceManagement/ServiceManagementRestProxy.php
  43. +3 −2 WindowsAzure/Table/Internal/MimeReaderWriter.php
  44. +21 −4 WindowsAzure/WindowsAzure.php
  45. +10 −0 changelog.txt
  46. +3 −3 examples/Client/CloudSubscription.php
  47. +73 −31 package.xml
  48. +23 −5 tests/WindowsAzureTests.php
  49. +14 −0 tests/framework/RestProxyTestBase.php
  50. +311 −14 tests/framework/ServiceManagementRestProxyTestBase.php
  51. +44 −0 tests/framework/TestResources.php
  52. +38 −3 tests/unit/WindowsAzure/Common/Internal/UtilitiesTest.php
  53. +57 −0 tests/unit/WindowsAzure/ServiceBus/models/ActionTest.php
  54. +2 −24 tests/unit/WindowsAzure/ServiceBus/models/FilterTest.php
  55. +22 −0 tests/unit/WindowsAzure/ServiceBus/models/SqlFilterTest.php
  56. +23 −24 tests/unit/WindowsAzure/ServiceManagement/{Models → Internal}/ServiceTest.php
  57. +76 −0 tests/unit/WindowsAzure/ServiceManagement/Internal/WindowsAzureServiceTest.php
  58. +76 −0 tests/unit/WindowsAzure/ServiceManagement/Models/ChangeDeploymentConfigurationOptionsTest.php
  59. +74 −0 tests/unit/WindowsAzure/ServiceManagement/Models/CreateDeploymentOptionsTest.php
  60. +15 −15 tests/unit/WindowsAzure/ServiceManagement/Models/CreateStorageServiceOptionsTest.php
  61. +64 −0 tests/unit/WindowsAzure/ServiceManagement/Models/DeploymentSlotTest.php
  62. +14 −20 ...unit/WindowsAzure/ServiceManagement/Models/{ServicePropertiesTest.php → DeploymentStatusTest.php}
  63. +280 −0 tests/unit/WindowsAzure/ServiceManagement/Models/DeploymentTest.php
  64. +74 −0 tests/unit/WindowsAzure/ServiceManagement/Models/GetDeploymentOptionsTest.php
  65. +58 −0 tests/unit/WindowsAzure/ServiceManagement/Models/GetDeploymentResultTest.php
  66. +58 −0 tests/unit/WindowsAzure/ServiceManagement/Models/GetHostedServicePropertiesOptionsTest.php
  67. +58 −0 tests/unit/WindowsAzure/ServiceManagement/Models/GetHostedServicePropertiesResultTest.php
  68. +1 −54 tests/unit/WindowsAzure/ServiceManagement/Models/GetStorageServicePropertiesResultTest.php
  69. +57 −0 tests/unit/WindowsAzure/ServiceManagement/Models/HostedServiceTest.php
  70. +91 −0 tests/unit/WindowsAzure/ServiceManagement/Models/InputEndpointTest.php
  71. +57 −0 tests/unit/WindowsAzure/ServiceManagement/Models/ListHostedServicesResultTest.php
  72. +2 −4 tests/unit/WindowsAzure/ServiceManagement/Models/ListStorageServicesResultTest.php
  73. +70 −0 tests/unit/WindowsAzure/ServiceManagement/Models/ModeTest.php
  74. +176 −0 tests/unit/WindowsAzure/ServiceManagement/Models/RoleInstanceTest.php
  75. +74 −0 tests/unit/WindowsAzure/ServiceManagement/Models/RoleTest.php
  76. +34 −0 tests/unit/WindowsAzure/ServiceManagement/Models/StorageServiceTest.php
  77. +9 −9 ...ure/ServiceManagement/Models/{UpdateStorageServiceOptionsTest.php → UpdateServiceOptionsTest.php}
  78. +57 −0 tests/unit/WindowsAzure/ServiceManagement/Models/UpgradeDeploymentOptionsTest.php
  79. +91 −0 tests/unit/WindowsAzure/ServiceManagement/Models/UpgradeStatusTest.php
  80. +811 −14 tests/unit/WindowsAzure/ServiceManagement/ServiceManagementRestProxyTest.php
View
@@ -32,8 +32,8 @@
const CHANNEL_GET_CONTAINER = 'get';
const CHANNEL_REST_CONTAINER = 'rest';
const PACKAGE_NAME = 'WindowsAzure';
-const PACKAGE_RELEASE_VERSION = '0.3.0';
-const PACKAGE_API_VERSION = '0.3.0';
+const PACKAGE_RELEASE_VERSION = '0.3.1';
+const PACKAGE_API_VERSION = '0.3.1';
const PACKAGE_RELEASE_STATE = 'beta';
const PACKAGE_API_STATE = 'beta';
const PACKAGE_MIN_PHP_VERSION = '5.3.0';
@@ -47,7 +47,12 @@
It is build as a thin REST call wrapper where each server call maps to a single method call within the library.
';
const PACKAGE_RELEASE_NOTES = '
-- Added Cloud Configuration Manager.
+- Added additional API support for Service Management:
+ * Operations on Hosted Services
+ > create, update, delete, list, get properties
+ * Operations on Deployments
+ > deployment: create, get, delete, swap, change configuration, update status, upgrade, rollback
+ > role instance: reboot, reimage
';
$dependencies = array(
array('required', 'HTTP_Request2', 'pear.php.net'),
View
@@ -30,8 +30,12 @@ Windows Azure tables, blobs, queues, service bus (queues and topics), service ru
* query and set the status of the current role
* REST API Version: 2011-03-08
* Service Management
- * create, update, delete, list, regenerate keys for storage accounts
- * create, update, delete, list affinity groups
+ * storage accounts: create, update, delete, list, regenerate keys
+ * affinity groups: create, update, delete, list, get properties
+ * locations: list
+ * hosted services: create, update, delete, list, get properties
+ * deployment: create, get, delete, swap, change configuration, update status, upgrade, rollback
+ * role instance: reboot, reimage
* REST API Version: 2011-10-01
@@ -43,9 +47,9 @@ To get the source code from GitHub, type
git clone https://github.com/WindowsAzure/azure-sdk-for-php.git
cd ./azure-sdk-for-php
-**Note**
-
-The PHP Client Libraries for Windows Azure have a dependency on the [HTTP_Request2](http://pear.php.net/package/HTTP_Request2), [Mail_mime](http://pear.php.net/package/Mail_mime), and [Mail_mimeDecode](http://pear.php.net/package/Mail_mimeDecode) PEAR packages. The recommended way to resolve these dependencies is to install them using the [PEAR package manager](http://pear.php.net/manual/en/installation.php).
+> **Note**
+>
+> The PHP Client Libraries for Windows Azure have a dependency on the [HTTP_Request2](http://pear.php.net/package/HTTP_Request2), [Mail_mime](http://pear.php.net/package/Mail_mime), and [Mail_mimeDecode](http://pear.php.net/package/Mail_mimeDecode) PEAR packages. The recommended way to resolve these dependencies is to install them using the [PEAR package manager](http://pear.php.net/manual/en/installation.php).
##Install via Composer
@@ -71,10 +75,9 @@ The PHP Client Libraries for Windows Azure have a dependency on the [HTTP_Reques
php composer.phar install
- <div class="dev-callout">
- <b>Note</b>
- <p>On Windows, you will also need to add the Git executable to your PATH environment variable.</p>
- </div>
+ > **Note**
+ >
+ > On Windows, you will also need to add the Git executable to your PATH environment variable.
##Install as a PEAR package
@@ -87,7 +90,7 @@ To install the PHP Client Libraries for Windows Azure as a PEAR package, follow
pear channel-discover pear.windowsazure.com
3. Install the PEAR package:
- pear install pear.windowsazure.com/WindowsAzure-0.3.0
+ pear install pear.windowsazure.com/WindowsAzure-0.3.1
# Usage
@@ -558,25 +561,65 @@ To create the .cer certificate, execute this:
openssl x509 -inform pem -in mycert.pem -outform der -out mycert.cer
### List Available Locations
-
- $serviceManagementRestProxy->listLocations();
- $locations = $result->getLocations();
- foreach($locations as $location){
- echo $location->getName()."<br />";
- }
+```PHP
+$serviceManagementRestProxy->listLocations();
+$locations = $result->getLocations();
+foreach($locations as $location){
+ echo $location->getName()."<br />";
+}
+```
### Create a Storage Service
To create a storage service, you need a name for the service (between 3 and 24 lowercase characters and unique within Windows Azure), a label (a base-64 encoded name for the service, up to 100 characters), and either a location or an affinity group. Providing a description for the service is optional.
- $name = "mystorageservice";
- $label = base64_encode($name);
- $options = new CreateStorageServiceOptions();
- $options->setLocation('West US');
- $result = $serviceManagementRestProxy->createStorageService($name, $label, $options);
+```PHP
+$name = "mystorageservice";
+$label = base64_encode($name);
+$options = new CreateStorageServiceOptions();
+$options->setLocation('West US');
+
+$result = $serviceManagementRestProxy->createStorageService($name, $label, $options);
+```
+### Create a Cloud Service
+
+A cloud service is also known as a hosted service (from earlier versions of Windows Azure). The **createHostedServices** method allows you to create a new hosted service by providing a hosted service name (which must be unique in Windows Azure), a label (the base 64-endcoded hosted service name), and a **CreateServiceOptions** object which allows you to set the location *or* the affinity group for your service.
+
+```PHP
+$name = "myhostedservice";
+$label = base64_encode($name);
+$options = new CreateServiceOptions();
+$options->setLocation('West US');
+// Instead of setLocation, you can use setAffinityGroup to set an affinity group.
+
+$result = $serviceManagementRestProxy->createHostedService($name, $label, $options);
+```
+
+### Create a Deployment
+
+To make a new deployment to Azure you must store the package file in a Windows Azure Blob Storage account under the same subscription as the hosted service to which the package is being uploaded. You can create a deployment package with the [Windows Azure PowerShell cmdlets](https://www.windowsazure.com/en-us/develop/php/how-to-guides/powershell-cmdlets/), or with the [cspack commandline tool](http://msdn.microsoft.com/en-us/library/windowsazure/gg432988.aspx).
+
+```PHP
+$hostedServiceName = "myhostedservice";
+$deploymentName = "v1";
+$slot = DeploymentSlot::PRODUCTION;
+$packageUrl = "URL_for_.cspkg_file";
+$configuration = file_get_contents('path_to_.cscfg_file');
+$label = base64_encode($hostedServiceName);
+
+$result = $serviceManagementRestProxy->createDeployment($hostedServiceName,
+ $deploymentName,
+ $slot,
+ $packageUrl,
+ $configuration,
+ $label);
+
+$status = $serviceManagementRestProxy->getOperationStatus($result);
+echo "Operation status: ".$status->getStatus()."<br />";
+```
**For more examples please see the [Windows Azure PHP Developer Center](http://www.windowsazure.com/en-us/develop/php)**
@@ -337,7 +337,7 @@ private function _addCreateBlobOptionalHeaders($options, $headers)
private function _addOptionalRangeHeader($headers, $start, $end)
{
if (!is_null($start) || !is_null($end)) {
- $range = $start . '-' . $end;
+ $range = $start . '-' . $end;
$rangeValue = 'bytes=' . $range;
$this->addOptionalHeader($headers, Resources::RANGE, $rangeValue);
}
@@ -2064,7 +2064,7 @@ public function deleteBlob($container, $blob, $options = null)
);
}
- $headers = $this->addOptionalAccessConditionHeader(
+ $headers = $this->addOptionalAccessConditionHeader(
$headers, $options->getAccessCondition()
);
@@ -54,10 +54,10 @@ public static function isValid($type)
case self::COMMITTED_TYPE:
case self::LATEST_TYPE:
case self::UNCOMMITTED_TYPE:
- return true;
+ return true;
default:
- return false;
+ return false;
}
}
}
@@ -276,8 +276,11 @@ protected function processLinkNode($xmlArray)
*
* @return none
*/
- protected function writeOptionalAttribute($xmlWriter, $attributeName, $attributeValue)
- {
+ protected function writeOptionalAttribute(
+ $xmlWriter,
+ $attributeName,
+ $attributeValue
+ ) {
Validate::notNull($xmlWriter, 'xmlWriter');
Validate::isString($attributeName, 'attributeName');
@@ -122,7 +122,7 @@ private function _parse()
switch ($this->_state) {
case ParserState::EXPECT_KEY:
- $key = $this->_extractKey();
+ $key = $this->_extractKey();
$this->_state = ParserState::EXPECT_ASSIGNMENT;
break;
@@ -132,11 +132,11 @@ private function _parse()
break;
case ParserState::EXPECT_VALUE:
- $value = $this->_extractValue();
- $this->_state = ParserState::EXPECT_SEPARATOR;
+ $value = $this->_extractValue();
+ $this->_state = ParserState::EXPECT_SEPARATOR;
$connectionStringValues[$key] = $value;
- $key = null;
- $value = null;
+ $key = null;
+ $value = null;
break;
default:
@@ -87,8 +87,8 @@ class Resources
const INVALID_BLOB_PAT_MSG = 'The provided access type is invalid.';
const INVALID_SVC_PROP_MSG = 'The provided service properties is invalid.';
const UNKNOWN_SRILZER_MSG = 'The provided serializer type is unknown';
- const INVALID_CSA_OPT_MSG = 'Must provide valid location or affinity group.';
- const INVALID_USA_OPT_MSG = 'Must provide either description or label.';
+ const INVALID_CREATE_SERVICE_OPTIONS_MSG = 'Must provide valid location or affinity group.';
+ const INVALID_UPDATE_SERVICE_OPTIONS_MSG = 'Must provide either description or label.';
const INVALID_CONFIG_MSG = 'Config object must be of type Configuration';
const INVALID_ACH_MSG = 'The provided access condition header is invalid';
const INVALID_RECEIVE_MODE_MSG = 'The receive message option is in neither RECEIVE_AND_DELETE nor PEEK_LOCK mode.';
@@ -107,6 +107,10 @@ class Resources
const ERROR_CONNECTION_STRING_MISSING_CHARACTER = "Missing %s character";
const ERROR_EMPTY_SETTINGS = 'No keys were found in the connection string';
const MISSING_LOCK_LOCATION_MSG = 'The lock location of the brokered message is missing.';
+ const INVALID_SLOT = "The provided deployment slot '%s' is not valid. Only 'staging' and 'production' are accepted.";
+ const INVALID_DEPLOYMENT_LOCATOR_MSG = 'A slot or deployment name must be provided.';
+ const INVALID_CHANGE_MODE_MSG = "The change mode must be 'Auto' or 'Manual'. Use Mode class constants for that purpose.";
+ const INVALID_DEPLOYMENT_STATUS_MSG = "The change mode must be 'Running' or 'Suspended'. Use DeploymentStatus class constants for that purpose.";
// HTTP Headers
const X_MS_HEADER_PREFIX = 'x-ms-';
@@ -152,6 +156,7 @@ class Resources
const CONTENT_ENCODING = 'content-encoding';
const CONTENT_LANGUAGE = 'content-language';
const CONTENT_LENGTH = 'content-length';
+ const CONTENT_LENGTH_NO_SPACE = 'contentlength';
const CONTENT_MD5 = 'content-md5';
const CONTENT_TYPE = 'content-type';
const CONTENT_ID = 'content-id';
@@ -254,6 +259,17 @@ class Resources
const QP_NEXT_PK = 'NextPartitionKey';
const QP_NEXT_RK = 'NextRowKey';
const QP_ACTION = 'action';
+ const QP_EMBED_DETAIL = 'embed-detail';
+
+ // Query parameter values
+ const QPV_REGENERATE = 'regenerate';
+ const QPV_CONFIG = 'config';
+ const QPV_STATUS = 'status';
+ const QPV_UPGRADE = 'upgrade';
+ const QPV_WALK_UPGRADE_DOMAIN = 'walkupgradedomain';
+ const QPV_REBOOT = 'reboot';
+ const QPV_REIMAGE = 'reimage';
+ const QPV_ROLLBACK = 'rollback';
// Request body content types
const URL_ENCODED_CONTENT_TYPE = 'application/x-www-form-urlencoded';
@@ -290,6 +306,61 @@ class Resources
const XTAG_KEY_TYPE = 'KeyType';
const XTAG_STORAGE_SERVICE_KEYS = 'StorageServiceKeys';
const XTAG_ERROR = 'Error';
+ const XTAG_HOSTED_SERVICE = 'HostedService';
+ const XTAG_HOSTED_SERVICE_PROPERTIES = 'HostedServiceProperties';
+ const XTAG_CREATE_HOSTED_SERVICE = 'CreateHostedService';
+ const XTAG_CREATE_STORAGE_SERVICE_INPUT = 'CreateStorageServiceInput';
+ const XTAG_UPDATE_STORAGE_SERVICE_INPUT = 'UpdateStorageServiceInput';
+ const XTAG_CREATE_AFFINITY_GROUP = 'CreateAffinityGroup';
+ const XTAG_UPDATE_AFFINITY_GROUP = 'UpdateAffinityGroup';
+ const XTAG_UPDATE_HOSTED_SERVICE = 'UpdateHostedService';
+ const XTAG_PACKAGE_URL = 'PackageUrl';
+ const XTAG_CONFIGURATION = 'Configuration';
+ const XTAG_START_DEPLOYMENT = 'StartDeployment';
+ const XTAG_TREAT_WARNINGS_AS_ERROR = 'TreatWarningsAsError';
+ const XTAG_CREATE_DEPLOYMENT = 'CreateDeployment';
+ const XTAG_DEPLOYMENT_SLOT = 'DeploymentSlot';
+ const XTAG_PRIVATE_ID = 'PrivateID';
+ const XTAG_ROLE_INSTANCE_LIST = 'RoleInstanceList';
+ const XTAG_UPGRADE_DOMAIN_COUNT = 'UpgradeDomainCount';
+ const XTAG_ROLE_LIST = 'RoleList';
+ const XTAG_SDK_VERSION = 'SdkVersion';
+ const XTAG_INPUT_ENDPOINT_LIST = 'InputEndpointList';
+ const XTAG_LOCKED = 'Locked';
+ const XTAG_ROLLBACK_ALLOWED = 'RollbackAllowed';
+ const XTAG_UPGRADE_STATUS = 'UpgradeStatus';
+ const XTAG_UPGRADE_TYPE = 'UpgradeType';
+ const XTAG_CURRENT_UPGRADE_DOMAIN_STATE = 'CurrentUpgradeDomainState';
+ const XTAG_CURRENT_UPGRADE_DOMAIN = 'CurrentUpgradeDomain';
+ const XTAG_ROLE_NAME = 'RoleName';
+ const XTAG_INSTANCE_NAME = 'InstanceName';
+ const XTAG_INSTANCE_STATUS = 'InstanceStatus';
+ const XTAG_INSTANCE_UPGRADE_DOMAIN = 'InstanceUpgradeDomain';
+ const XTAG_INSTANCE_FAULT_DOMAIN = 'InstanceFaultDomain';
+ const XTAG_INSTANCE_SIZE = 'InstanceSize';
+ const XTAG_INSTANCE_STATE_DETAILS = 'InstanceStateDetails';
+ const XTAG_INSTANCE_ERROR_CODE = 'InstanceErrorCode';
+ const XTAG_OS_VERSION = 'OsVersion';
+ const XTAG_ROLE_INSTANCE = 'RoleInstance';
+ const XTAG_ROLE = 'Role';
+ const XTAG_INPUT_ENDPOINT = 'InputEndpoint';
+ const XTAG_VIP = 'Vip';
+ const XTAG_PORT = 'Port';
+ const XTAG_DEPLOYMENT = 'Deployment';
+ const XTAG_DEPLOYMENTS = 'Deployments';
+ const XTAG_REGENERATE_KEYS = 'RegenerateKeys';
+ const XTAG_SWAP = 'Swap';
+ const XTAG_PRODUCTION = 'Production';
+ const XTAG_SOURCE_DEPLOYMENT = 'SourceDeployment';
+ const XTAG_CHANGE_CONFIGURATION = 'ChangeConfiguration';
+ const XTAG_MODE = 'Mode';
+ const XTAG_UPDATE_DEPLOYMENT_STATUS = 'UpdateDeploymentStatus';
+ const XTAG_ROLE_TO_UPGRADE = 'RoleToUpgrade';
+ const XTAG_FORCE = 'Force';
+ const XTAG_UPGRADE_DEPLOYMENT = 'UpgradeDeployment';
+ const XTAG_UPGRADE_DOMAIN = 'UpgradeDomain';
+ const XTAG_WALK_UPGRADE_DOMAIN = 'WalkUpgradeDomain';
+ const XTAG_ROLLBACK_UPDATE_OR_UPGRADE = 'RollbackUpdateOrUpgrade';
// Service Bus
const LIST_TOPICS_PATH = '$Resources/Topics';
@@ -342,6 +413,4 @@ class Resources
const CONNECT_TIMEOUT = 'connect_timeout';
// @codingStandardsIgnoreEnd
-}
-
-
+}
Oops, something went wrong.

0 comments on commit aa2dfd7

Please sign in to comment.