Skip to content

Commit

Permalink
Merge pull request #4 from Xelon-AG/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
tonkoshkurik committed Nov 10, 2022
2 parents c4bbe69 + 325bb75 commit 09e6440
Show file tree
Hide file tree
Showing 72 changed files with 2,426 additions and 467 deletions.
161 changes: 115 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,70 +1,139 @@

[<img src="https://github-ads.s3.eu-central-1.amazonaws.com/support-ukraine.svg?t=1" />](https://supportukrainenow.org)

# PHP API Client for VmWare

# PHP API Client for VMWare
[![Latest Version on Packagist](https://img.shields.io/packagist/v/xelon-ag/vmware-php-client.svg?style=flat-square)](https://packagist.org/packages/xelon-ag/vmware-php-client)
[![GitHub Tests Action Status](https://img.shields.io/github/workflow/status/xelon-ag/vmware-php-client/run-tests?label=tests)](https://github.com/xelon-ag/vmware-php-client/actions?query=workflow%3Arun-tests+branch%3Amain)
[![GitHub Code Style Action Status](https://img.shields.io/github/workflow/status/xelon-ag/vmware-php-client/Check%20&%20fix%20styling?label=code%20style)](https://github.com/xelon-ag/vmware-php-client/actions?query=workflow%3A"Check+%26+fix+styling"+branch%3Amain)
[![Total Downloads](https://img.shields.io/packagist/dt/xelon-ag/vmware-php-client.svg?style=flat-square)](https://packagist.org/packages/xelon-ag/vmware-php-client)

This is where your description should go. Limit it to a paragraph or two. Consider adding a small example.

## Support us

[<img src="https://github-ads.s3.eu-central-1.amazonaws.com/vmware-php-client.jpg?t=1" width="419px" />](https://spatie.be/github-ad-click/vmware-php-client)

We invest a lot of resources into creating [best in class open source packages](https://spatie.be/open-source). You can support us by [buying one of our paid products](https://spatie.be/open-source/support-us).

We highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using. You'll find our address on [our contact page](https://spatie.be/about-us). We publish all received postcards on [our virtual postcard wall](https://spatie.be/open-source/postcards).

## Installation

You can install the package via composer:

```bash
composer require xelon-ag/vmware-php-client
```

You can publish the config file with:

```bash
php artisan vendor:publish --tag="vmware-php-client-config"
```

This is the contents of the published config file:

```php
return [
'session_ttl' => env('VMWARE_SESSION_TTL', 10),
'enable_logs' => env('VMWARE_ENABLE_LOGS', true),
];
```


## Usage

## Getting started
Create a connection to your hypervisor so that you can call the methods:
```php
$vmWareClient = new Xelon\VmWareClient();
echo $vmWareClient->echoPhrase('Hello, Xelon!');
$vcenterClient = new Xelon\VmWareClient\VcenterClient(
'https://10.20.30.40',
'mylogin',
'mypassword'
);
$vmInfo = $vcenterClient->getVmInfo('vm-123');
```


## Changelog

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

## Contributing

Please see [CONTRIBUTING](https://github.com/gazhur94/.github/blob/main/CONTRIBUTING.md) for details.

## Security Vulnerabilities

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

This lib can run in three modes: `rest`, `soap` and `both`. By default, it runs in `rest` mode, but you can set another mode in constructor:
```php
$vcenterClient = new Xelon\VmWareClient\VcenterClient(
'https://10.20.30.40',
'mylogin',
'mypassword',
'soap'
);
```
Yet we recommend to use constants:
```php
$vcenterClient = new Xelon\VmWareClient\VcenterClient(
'https://10.20.30.40',
'mylogin',
'mypassword',
Xelon\VmWareClient\VcenterClient::MODE_SOAP
);
```
### `rest` mode
With `rest` mode you can use REST methods which you can find in the [VMWare API developer center](https://developer.vmware.com/apis/vsphere-automation/latest/).
For now, the lib has only some methods available. You can find full list of files in the `vendor/xelon-ag/vmware-php-client/src/Traits/Rest` folder.
> We plan to add the full list of methods later.
### `soap` mode
Using `soap` mode allow you to use SOAP methods which you can find in [VMWare SOAP developer center](https://developer.vmware.com/apis/1192/vsphere).
For now, the lib has only some methods available. You can find full list of files in the `vendor/xelon-ag/vmware-php-client/src/Traits/SOAP` folder.
> We plan to add the full list of methods later.

Here's how to make your first SOAP call:
```php
$folder = $vcenterClient->soap->createFolder('group-v3', 'foldername');
```
If you want to use both modes at one time you can set `both` mode (Xelon\VmWareClient\VcenterClient::MODE_BOTH).
If you want to run custom `soap` method, which you do not find in lib, you can run this method directly:
```php
$vcenterClient = new Xelon\VmWareClient\VcenterClient(
'https://10.20.30.40',
'mylogin',
'mypassword',
Xelon\VmWareClient\VcenterClient::MODE_SOAP
);
$taskInfo = $vcenterClient->soap->request('ReconfigureComputeResource_Task', [
'_this' => [
'_' => 'domain-c33',
'type' => 'ComputeResource',
],
'spec' => [
'@type' => 'ClusterConfigSpecEx',
'drsConfig' => [
'@type' => 'ClusterDrsConfigInfo',
],
'rulesSpec' => [
'@type' => 'ClusterRuleSpec',
'operation' => 'add',
'info' => [
'@type' => 'ClusterAntiAffinityRuleSpec',
'enabled' => true,
'name' => 'VM-VM Affinity rule',
'userCreated' => true,
'vm' => [
['_' => 'vm-133', 'type' => 'VirtualMachine'],
['_' => 'vm-134', 'type' => 'VirtualMachine']
]
],
],
'dpmConfig' => [
'@type' => 'ClusterDpmConfigInfo',
],

],
'modify' => false,
])
```
> Order of parameters is very important. You can find the correct order in the [documentation]((https://developer.vmware.com/apis/1192/vsphere)), the `WSDL type definition` section for each object type.
## Credits

- [Andrii Hazhur](https://github.com/gazhur94)
- [All Contributors](../../contributors)

- [All Contributors](https://github.com/Xelon-AG/vmware-php-client/graphs/contributors)
## Questions and feedback
If you've got questions about setup or just want to chat with the developer, please feel free to reach out to [email protected].
## License

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
3 changes: 2 additions & 1 deletion config/vmware-php-client.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@

return [
// session ttl in minutes
'session_ttl' => env('VMWARE_SESSION_TTL', 120),
'session_ttl' => env('VMWARE_SESSION_TTL', 10),
'enable_logs' => env('VMWARE_ENABLE_LOGS', true),
];
Loading

0 comments on commit 09e6440

Please sign in to comment.