Source code for cloudmesh_client.cloud.iaas.CloudProvider

from cloudmesh_client.common.ConfigDict import ConfigDict
from cloudmesh_client.cloud.iaas.provider.openstack.CloudProviderOpenstackAPI import \
    CloudProviderOpenstackAPI
from cloudmesh_client.cloud.iaas.CloudProviderBase import CloudProviderBase
import requests
from cloudmesh_client.common.Error import Error
from cloudmesh_client.common.todo import TODO
from cloudmesh_client.cloud.iaas.provider.libcloud.CloudProviderLibcloudEC2 import CloudProviderLibcloudEC2
from cloudmesh_client.cloud.iaas.provider.azure.CloudProviderAzureAPI import CloudProviderAzureAPI
from cloudmesh_client.shell.console import Console

requests.packages.urllib3.disable_warnings()


[docs]class CloudProvider(CloudProviderBase): def __init__(self, cloudname, user=None, flat=True): super(CloudProvider, self).__init__(cloudname, user=user) try: d = ConfigDict("cloudmesh.yaml") if cloudname not in d["cloudmesh"]["clouds"]: Console.error("the cloud {} is not defined in the yaml file. failed." .format(cloudname), traceflag=False) return cloud_details = d["cloudmesh"]["clouds"][cloudname] if cloud_details["cm_type"] == "openstack": provider = CloudProviderOpenstackAPI( cloudname, cloud_details, flat=flat) self.provider = provider self.provider_class = CloudProviderOpenstackAPI if cloud_details["cm_type"] == "ec2": provider = CloudProviderLibcloudEC2( cloudname, cloud_details, flat=flat) self.provider = provider self.provider_class = CloudProviderLibcloudEC2 if cloud_details["cm_type"] == "azure": # raise ValueError("azure cloud provider yet implemented. failed.") # Console.TODO("Azure provider to be implemented") provider = CloudProviderAzureAPI( cloudname, cloud_details) self.provider = provider self.provider_class = CloudProviderAzureAPI except Exception as e: Error.traceback(e)
[docs] def get_attributes(self, kind): return self.provider.attributes(kind)
[docs]def main(): from pprint import pprint cloud = "kilo" provider = CloudProvider(cloud).provider print(provider, type(provider)) # pprint (provider.__dict__) # pprint (dir(provider)) r = provider.list_flavor(cloud) pprint(r) for kind in ["flavor", "image", "vm", "key"]: # "limits", "quota"]: r = provider.list(kind, cloud) pprint(r)
if __name__ == "__main__": main()