CloudVE/cloudbridge

Separate the Cloud Provider Package Installation Completely

RyanSiu1995 opened this issue · 12 comments

I have spotted that the SIMPLE or default installation will install all three cloud providers, AWS, GCP and OpenStack.
However, in my case, I only use AWS and GCP so it makes my environment having one more unused dependency.
This is not an ideal situation.
If possible, could we have the package separated installation just like Azure?
This make everything aligned and easy to manage.

More specifically, the dependency in OpenStack introduces pyinotify and it is not compatible with MacOS. So, we need to cut it off because we are not using it actually.

@RyanSiu1995 Thanks for making PR (#292) and initiating this discussion. The original reason for making the simple install include some providers was to make cloudbridge usable immediately by new users as otherwise, it would install a non-functional cloudbridge. We cut Azure out because it was simply too large to include by default.

However, maybe it doesn't matter so much, and allowing full control over which providers are installed is better. We would have to make a major release to include this change, but that's not a real problem. @afgane @almahmoud @FabioRosado Any thoughts?

@RyanSiu1995 But on another note, I'm not running into any issues on mac with pip install cloudbridge. And pyinotify does not appear to be an openstack dependency anymore, are you installing the latest version (2.2.0) with updated openstack libs?

appdirs==1.4.4
attrs==21.2.0
autopage==0.4.0
boto3==1.20.7
botocore==1.23.7
cachetools==4.2.4
certifi==2021.10.8
cffi==1.15.0
charset-normalizer==2.0.7
cliff==3.9.0
cloudbridge==2.2.0
cmd2==2.3.0
cryptography==35.0.0
debtcollector==2.3.0
decorator==5.1.0
deprecation==2.1.0
dogpile.cache==1.1.4
google-api-core==2.2.2
google-api-python-client==2.31.0
google-auth==2.3.3
google-auth-httplib2==0.1.0
googleapis-common-protos==1.53.0
httplib2==0.20.2
idna==3.3
iso8601==1.0.0
jmespath==0.10.0
jsonpatch==1.32
jsonpointer==2.2
keystoneauth1==4.4.0
msgpack==1.0.2
munch==2.5.0
netaddr==0.8.0
netifaces==0.11.0
openstacksdk==0.59.0
os-client-config==2.1.0
os-service-types==1.7.0
osc-lib==2.4.2
oslo.config==8.7.1
oslo.context==3.4.0
oslo.i18n==5.1.0
oslo.log==4.6.1
oslo.serialization==4.2.0
oslo.utils==4.11.0
packaging==21.2
pbr==5.7.0
prettytable==2.4.0
protobuf==3.19.1
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.21
pyeventsystem==0.1.0
pyparsing==2.4.7
pyperclip==1.8.2
python-dateutil==2.8.2
python-keystoneclient==4.3.0
python-neutronclient==7.6.0
python-novaclient==17.6.0
python-swiftclient==3.12.0
pytz==2021.3
PyYAML==6.0
requests==2.26.0
requestsexceptions==1.4.0
rfc3986==1.5.0
rsa==4.7.2
s3transfer==0.5.0
simplejson==3.17.6
six==1.16.0
stevedore==3.5.0
tenacity==8.0.1
uritemplate==4.1.1
urllib3==1.26.7
wcwidth==0.2.5
wrapt==1.13.3

Regarding to the pyinotify, we are using pip-compile to compile the nested dependencies.
Unfortunately, the pip-compile does not respect the sys_platform for some reasons.
So, we encounter the issue of pyinotify in this case.

For your information, the pyinotify is specified under this dependency tree.
https://github.com/openstack/python-neutronclient/blob/master/requirements.txt#L11
https://github.com/openstack/oslo.log/blob/master/requirements.txt#L12

But no matter how, it will be great if we can have a bigger control in what kind of providers are installed.
When this package grows in the future, for example, including alicloud or other clouds, the controlling in the provider selection is a must. You don't want to include more and more unexpected packages installed in your runtime.
It makes the deliverable to be bigger and also raises some security concerns

@RyanSiu1995 Just to let you know that we are taking this up for discussion on tuesday and can hopefully merge this then. I tend to agree with your argument.

Hello folks, apologies for the delay in getting back to you. Yeah it should be fine, we are installing the full cloudbridge so the changes shouldn't affect us in a bad way 😄

Hi folks, any update on this?

@RyanSiu1995 Thanks for these changes, the PR has been merged.

Thank you for helping this out! I wonder when the next release will be here.

@FabioRosado Can you comment on ETA for this: #293? We could probably make a release with that change included?

@nuwang I need to keep working on it, perhaps a week or so? I'm working on this in-between baby duties atm 😄

No rush at all on that, baby duties come first :-) Let's release this now, and we can always do a 3.1 later.

The 3.0.0 release is out: https://github.com/CloudVE/cloudbridge/releases/tag/v3.0.0

Thanks to both for these contributions @RyanSiu1995 @FabioRosado