From 5e96d872748c265e16eb22c7c58bb2a658b1eb47 Mon Sep 17 00:00:00 2001 From: Harsh3305 Date: Wed, 4 Oct 2023 19:00:55 +0530 Subject: [PATCH 1/5] Added IBM cloud device obejct as constant --- src/Storage/Storage.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Storage/Storage.php b/src/Storage/Storage.php index cabd18c8..708b9fa4 100644 --- a/src/Storage/Storage.php +++ b/src/Storage/Storage.php @@ -21,6 +21,8 @@ class Storage const DEVICE_LINODE = 'linode'; + const DEVICE_IBM_CLOUD_OBJECT ="IBM Cloud Object"; + /** * Devices. * From d4067a46e1daa9a74d3d37bc6ba322babdda130e Mon Sep 17 00:00:00 2001 From: Harsh3305 Date: Wed, 4 Oct 2023 19:02:30 +0530 Subject: [PATCH 2/5] Created IBM cloud object to connect with IBM --- src/Storage/Device/IBMCloudObject.php | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/Storage/Device/IBMCloudObject.php diff --git a/src/Storage/Device/IBMCloudObject.php b/src/Storage/Device/IBMCloudObject.php new file mode 100644 index 00000000..c0f328ed --- /dev/null +++ b/src/Storage/Device/IBMCloudObject.php @@ -0,0 +1,60 @@ +headers['host'] = $bucket.'.'.$region.'.'.'cloud.ibm.com'; + } + + + /** + * @return string + */ + public function getName(): string + { + return 'IBM Cloud Object Storage'; + } + + /** + * @return string + */ + public function getDescription(): string + { + return 'IBM Cloud Object'; + } + + /** + * @return string + */ + public function getType(): string + { + return Storage::DEVICE_IBM_CLOUD_OBJECT; + } +} From 28de259bdf684c66c8884ad3c77c114b5e1ed60a Mon Sep 17 00:00:00 2001 From: Harsh3305 Date: Wed, 4 Oct 2023 19:08:31 +0530 Subject: [PATCH 3/5] Add test for IBM Cloud Object --- tests/Storage/Device/IBMCloudObjectTest.php | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/Storage/Device/IBMCloudObjectTest.php diff --git a/tests/Storage/Device/IBMCloudObjectTest.php b/tests/Storage/Device/IBMCloudObjectTest.php new file mode 100644 index 00000000..1f166143 --- /dev/null +++ b/tests/Storage/Device/IBMCloudObjectTest.php @@ -0,0 +1,34 @@ +root = '/root'; + $key = $_SERVER['CEPH_ACCESS_KEY'] ?? ''; + $secret = $_SERVER['CEPH_SECRET'] ?? ''; + $bucket = 'utopia-storage-test'; + + $this->object = new IBMCloudObject($this->root, $key, $secret, $bucket, IBMCloudObject::US_EAST_1, IBMCloudObject::ACL_PRIVATE); + } + + protected function getAdapterName(): string + { + return 'IBM Cloud Object Storage'; + } + + protected function getAdapterType(): string + { + return $this->object->getType(); + } + + protected function getAdapterDescription(): string + { + return 'IBM Cloud Object'; + } +} \ No newline at end of file From 9e9c3cfad738aea4674c3bb41aae9dc86adbb2ad Mon Sep 17 00:00:00 2001 From: Harsh3305 Date: Sat, 14 Oct 2023 08:23:11 +0530 Subject: [PATCH 4/5] Fix lint fail --- src/Storage/Device/IBMCloudObject.php | 1 - src/Storage/Storage.php | 2 +- tests/Storage/Device/IBMCloudObjectTest.php | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Storage/Device/IBMCloudObject.php b/src/Storage/Device/IBMCloudObject.php index c0f328ed..0d26fc33 100644 --- a/src/Storage/Device/IBMCloudObject.php +++ b/src/Storage/Device/IBMCloudObject.php @@ -32,7 +32,6 @@ public function __construct(string $root, string $accessKey, string $secretKey, parent::__construct($root, $accessKey, $secretKey, $bucket, $region, $acl); $this->headers['host'] = $bucket.'.'.$region.'.'.'cloud.ibm.com'; } - /** * @return string diff --git a/src/Storage/Storage.php b/src/Storage/Storage.php index 708b9fa4..87e9db03 100644 --- a/src/Storage/Storage.php +++ b/src/Storage/Storage.php @@ -21,7 +21,7 @@ class Storage const DEVICE_LINODE = 'linode'; - const DEVICE_IBM_CLOUD_OBJECT ="IBM Cloud Object"; + const DEVICE_IBM_CLOUD_OBJECT = 'IBM Cloud Object'; /** * Devices. diff --git a/tests/Storage/Device/IBMCloudObjectTest.php b/tests/Storage/Device/IBMCloudObjectTest.php index 1f166143..bd7893c8 100644 --- a/tests/Storage/Device/IBMCloudObjectTest.php +++ b/tests/Storage/Device/IBMCloudObjectTest.php @@ -31,4 +31,4 @@ protected function getAdapterDescription(): string { return 'IBM Cloud Object'; } -} \ No newline at end of file +} From 416283e9bfff9dc3a91fb905240ed26cc0727538 Mon Sep 17 00:00:00 2001 From: Harsh3305 Date: Tue, 14 Nov 2023 20:25:56 +0530 Subject: [PATCH 5/5] Add env for IBM cloud object --- .github/workflows/tests.yml | 4 ++++ tests/Storage/Device/IBMCloudObjectTest.php | 7 ++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 43d7ca7e..a8752bd7 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -31,6 +31,8 @@ jobs: env: DO_ACCESS_KEY: ${{ secrets.DO_ACCESS_KEY }} DO_SECRET: ${{ secrets.DO_SECRET }} + IBM_CLOUD_ACCESS_KEY: ${{ secrets.IBM_CLOUD_ACCESS_KEY }} + IBM_CLOUD_SECRET: ${{ secrets.IBM_CLOUD_SECRET }} LINODE_ACCESS_KEY: ${{ secrets.LINODE_ACCESS_KEY }} LINODE_SECRET: ${{ secrets.LINODE_SECRET }} S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} @@ -67,6 +69,8 @@ jobs: env: DO_ACCESS_KEY: ${{ secrets.DO_ACCESS_KEY }} DO_SECRET: ${{ secrets.DO_SECRET }} + IBM_CLOUD_ACCESS_KEY: ${{ secrets.IBM_CLOUD_ACCESS_KEY }} + IBM_CLOUD_SECRET: ${{ secrets.IBM_CLOUD_SECRET }} LINODE_ACCESS_KEY: ${{ secrets.LINODE_ACCESS_KEY }} LINODE_SECRET: ${{ secrets.LINODE_SECRET }} S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }} diff --git a/tests/Storage/Device/IBMCloudObjectTest.php b/tests/Storage/Device/IBMCloudObjectTest.php index bd7893c8..4d167d71 100644 --- a/tests/Storage/Device/IBMCloudObjectTest.php +++ b/tests/Storage/Device/IBMCloudObjectTest.php @@ -3,6 +3,7 @@ namespace Utopia\Tests\Storage\Device; use Utopia\Storage\Device\IBMCloudObject; +use Utopia\Storage\Storage; use Utopia\Tests\Storage\S3Base; class IBMCloudObjectTest extends S3Base @@ -10,8 +11,8 @@ class IBMCloudObjectTest extends S3Base protected function init(): void { $this->root = '/root'; - $key = $_SERVER['CEPH_ACCESS_KEY'] ?? ''; - $secret = $_SERVER['CEPH_SECRET'] ?? ''; + $key = $_SERVER['IBM_CLOUD_ACCESS_KEY'] ?? ''; + $secret = $_SERVER['IBM_CLOUD_SECRET'] ?? ''; $bucket = 'utopia-storage-test'; $this->object = new IBMCloudObject($this->root, $key, $secret, $bucket, IBMCloudObject::US_EAST_1, IBMCloudObject::ACL_PRIVATE); @@ -29,6 +30,6 @@ protected function getAdapterType(): string protected function getAdapterDescription(): string { - return 'IBM Cloud Object'; + return Storage::DEVICE_IBM_CLOUD_OBJECT; } }