testedpastebin

pastebin  时间:2021-04-04  阅读:()
ApacheLibcloudDocumentationRelease3.
3.
1TheApacheSoftwareFoundationJan25,2021Contents1Documentation31.
1Main31.
1.
1GettingStarted31.
1.
2SupportedProviders41.
1.
3SupportedPythonVersions191.
1.
4ThirdPartyDrivers201.
1.
5Compute201.
1.
6ObjectStorage221.
1.
7LoadBalancer221.
1.
8DNS231.
1.
9Container241.
1.
10Backup261.
1.
11Troubleshooting261.
1.
12APIDocumentation311.
1.
13FrequentlyAskedQuestions(FAQ)311.
1.
14ChangesinApacheLibcloudv2.
0321.
1.
15Registeringathirdpartydriver351.
1.
16SSLCerticateValidationin=3.
5.
IfyoustillneedtousLibcloudwithoneofthenowunsupportedversions,youcandothatbyusingthelatestreleaseofLibcloudwhichstillsupportsthoseversions(Libcloudv2.
8).
ApacheLibcloudisaPythonlibrarywhichhidesdifferencesbetweendifferentcloudproviderAPIsandallowsyoutomanagedifferentcloudresourcesthroughauniedandeasytouseAPI.
ResourceyoucanmanagewithLibcloudaredividedinthefollowingcategories:CloudServersandBlockStorage-servicessuchasAmazonEC2andRackspaceCloudServersCloudObjectStorageandCDN-servicessuchasAmazonS3andRackspaceCloudFilesLoadBalancersasaService-servicessuchasAmazonElasticLoadBalancerandGoGridLoadBalancersDNSasaService-servicessuchasAmazonRoute53andZerigoContainerServices-containervirtualizationlikeDockerandRktaswellascontainerbasedservicesBackupasaService-servicessuchasAmazonEBSandOpenStackFreezerFig.
1:AsubsetofsupportedprovidersinLibcloud.
Contents1ApacheLibcloudDocumentation,Release3.
3.
12ContentsCHAPTER1Documentation1.
1Main1.
1.
1GettingStartedInstallation(stableversion)LibcloudisavailableonPyPi.
Youcaninstalllateststableversionusingpip:pipinstallapache-libcloudInstallation(developmentversion)YoucaninstalllatestdevelopmentversionfromourGitrepository:pipinstall-egit+https://git-wip-us.
apache.
org/repos/asf/libcloud.
git@trunk→#egg=apache-libcloudUpgradingIfyouusedpiptoinstallthelibraryyoucanalsouseittoupgradeit:pipinstall--upgradeapache-libcloudUsingitThissectiondescribesastandardwork-owwhichyoufollowwhenworkingwithanyoftheLibclouddrivers.
1.
Obtainreferencetotheproviderdriver3ApacheLibcloudDocumentation,Release3.
3.
1frompprintimportpprintimportlibcloudcls=libcloud.
get_driver(libcloud.
DriverType.
COMPUTE,libcloud.
DriverType.
COMPUTE.
→RACKSPACE)2.
Instantiatethedriverwithyourprovidercredentialsdriver=cls('myusername','myapikey')Keepinmindthatsomedriverstakeadditionalargumentssuchasregionandapi_version.
Formoreinformationonwhichargumentsyoucanpasstoyourproviderdriver,seeprovider-specicdocumentationandthedriverdocstrings.
3.
Startusingthedriverpprint(driver.
list_sizes())pprint(driver.
list_nodes())4.
Puttingitalltogetherfrompprintimportpprintimportlibcloudcls=libcloud.
get_driver(libcloud.
DriverType.
COMPUTE,libcloud.
DriverType.
COMPUTE.
→RACKSPACE)driver=cls('myusername','myapikey')pprint(driver.
list_sizes())pprint(driver.
list_nodes())YoucanndmoreexampleswithcommonpatternswhichcanhelpyougetstartedontheComputeExamplespage.
WheretogofromhereThebestthingtodoafterunderstandingthebasicdriverwork-owistovisitthedocumentationchapterfortheAPIyouareinterestedin(Compute,ObjectStorage,LoadBalancer,DNS).
ChapterforeachAPIexplainssomebasicterminologyandthingsyouneedtoknowtomakeaneffectiveuseofthatAPI.
Afteryouhaveagoodgraspofthosebasicconcepts,youareencouragedtocheckthedriverspecicdocumentation(ifavailable)andusageexamples.
Ifthedriverspecicdocumentationfortheprovideryouareinterestedinisnotavailableyet,youareencouragedtocheckdocstringsforthatdriver.
1.
1.
2SupportedProvidersThispageslistssupportedprovidersandmethodsforalltheAPIs.
Compute4Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ProviderMatrixProviderDocumentationProviderConstantSupportedRegionsAbiquoABIQUOsingleregiondriverAliyunECSClickALIYUN_ECSsingleregiondriverPCextremeAuroraComputeClickAURORACOMPUTEsingleregiondriverAzureVirtualmachinesClickAZUREsingleregiondriverAzureVirtualmachinesClickAZURE_ARMsingleregiondriverBlueboxBlocksBLUEBOXsingleregiondriverBrightboxBRIGHTBOXsingleregiondriverBSNLClickBSNLsingleregiondriverCloudscaleClickCLOUDSCALEsingleregiondriverCloudSigma(APIv2.
0)ClickCLOUDSIGMAsingleregiondriverCloudStackClickCLOUDSTACKsingleregiondriverCloudwattClickCLOUDWATTsingleregiondriverDigitalOceanClickDIGITAL_OCEANsingleregiondriverDimensionDataClickDIMENSIONDATAsingleregiondriverAmazonEC2ClickEC2ap-northeast-1,ap-northeast-2,ap-northeaEnomalyElasticComputingPlatformECPsingleregiondriverElasticHostsELASTICHOSTSsingleregiondriverEquinixMetalClickEQUINIXMETALsingleregiondriverEucalyptusEUCALYPTUSsingleregiondriverExoscaleClickEXOSCALEsingleregiondriverGandiClickGANDIsingleregiondriverGoogleComputeEngineClickGCEsingleregiondriverGiGG8NodeProviderGIG_G8singleregiondriverGoGridGOGRIDsingleregiondriverGridscaleClickGRIDSCALEsingleregiondriverHostVirtualHOSTVIRTUALsingleregiondriverIkoulaClickIKOULAsingleregiondriverIndosatClickINDOSATsingleregiondriverInternetSolutionsClickINTERNETSOLUTIONSsingleregiondriverJoyentJOYENTsingleregiondriverKamateraClickKAMATERAsingleregiondriverKiliPublicCloudClickKILIsingleregiondriverKTUCloudKTUCLOUDsingleregiondriverkubevirtKUBEVIRTsingleregiondriverLibvirtClickLIBVIRTsingleregiondriverLinodeLINODEsingleregiondriverMaxihostClickMAXIHOSTsingleregiondriverMedOneClickMEDONEsingleregiondriverNephoScaleNEPHOSCALEsingleregiondriverNimbusClickNIMBUSsingleregiondriverNTTAmericaClickNTTAsingleregiondriverNTTC-CISClickNTTCISsingleregiondriverOnAppClickONAPPsingleregiondriver1and1ClickONEANDONEsingleregiondriverOpenNebula(v3.
8)OPENNEBULAsingleregiondriverOpenStackClickOPENSTACKsingleregiondriverOutscaleAPIClickOUTSCALEsingleregiondriver1.
1.
Main5ApacheLibcloudDocumentation,Release3.
3.
1ProviderDocumentationProviderConstantSupportedRegionsOutscaleINCClickOUTSCALE_INCsingleregiondriverOutscaleSASClickOUTSCALE_SASsingleregiondriverOvhClickOVHca,euProtBricksPROFIT_BRICKSsingleregiondriverRackspaceCloud(NextGen)ClickRACKSPACEsingleregiondriverRackspaceCloud(FirstGen)RACKSPACE_FIRST_GENsingleregiondriverRimuHostingRIMUHOSTINGsingleregiondriverScalewayClickSCALEWAYsingleregiondriverServerLoveSERVERLOVEsingleregiondriverskalicloudSKALICLOUDsingleregiondriverSoftLayerSOFTLAYERsingleregiondrivervCloudTERREMARKsingleregiondriverUpcloudClickUPCLOUDsingleregiondriverVCLVCLsingleregiondrivervCloudClickVCLOUDsingleregiondriverVoxelVoxCLOUDVOXELsingleregiondrivervps.
netVPSNETsingleregiondriverVMwarevSphereClickVSPHEREsingleregiondriverVultrClickVULTRsingleregiondriverSupportedMethods(Basecompute)ProviderlistnodescreatenoderebootnodedestroynodestartnodestopnodeliAbiquoyesyesyesyesnonoyAliyunECSyesyesyesyesyesyesyPCextremeAuroraComputeyesyesyesyesnonoyAzureVirtualmachinesyesyesyesyesnonoyAzureVirtualmachinesyesyesyesyesyesyesyBlueboxBlocksyesyesyesyesnonoyBrightboxyesyesnoyesnonoyBSNLyesyesyesyesyesyesyCloudscaleyesyesyesyesyesyesyCloudSigma(APIv2.
0)yesyesnoyesyesyesyCloudStackyesyesyesyesnonoyCloudwattyesyesyesyesyesyesyDigitalOceanyesyesyesyesnonoyDimensionDatayesyesyesyesyesyesyAmazonEC2yesyesyesyesyesyesyEnomalyElasticComputingPlatformyesyesyesyesnonoyElasticHostsyesyesyesyesnonoyEquinixMetalyesyesyesyesyesyesyEucalyptusyesyesyesyesyesyesyExoscaleyesyesyesyesnonoyGandiyesyesyesyesnonoyGoogleComputeEngineyesyesyesyesyesyesyGiGG8NodeProvideryesyesyesyesyesyesyGoGridyesyesyesyesnonoyGridscaleyesyesyesyesyesnoy6Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Table2–continuedfrompreviouspageProviderlistnodescreatenoderebootnodedestroynodestartnodestopnodeliHostVirtualyesyesyesyesyesyesyIkoulayesyesyesyesnonoyIndosatyesyesyesyesyesyesyInternetSolutionsyesyesyesyesyesyesyJoyentyesyesyesyesyesyesyKamaterayesyesyesyesyesyesyKiliPublicCloudyesyesyesyesyesyesyKTUCloudyesyesyesyesnonoykubevirtyesyesyesyesyesyesyLibvirtyesnoyesyesyesyesnLinodeyesyesyesyesyesyesyMaxihostyesyesyesyesyesyesyMedOneyesyesyesyesyesyesyNephoScaleyesyesyesyesyesyesyNimbusyesyesyesyesyesyesyNTTAmericayesyesyesyesyesyesyNTTC-CISyesyesyesyesyesyesyOnAppyesyesnoyesnonoy1and1yesyesyesyesnonoyOpenNebula(v3.
8)yesyesyesyesnonoyOpenStackyesnoyesyesyesyesyOutscaleAPIyesyesyesyesyesyesyOutscaleINCyesyesyesyesyesyesyOutscaleSASyesyesyesyesyesyesyOvhyesyesnoyesnonoyProtBricksyesyesyesyesyesyesyRackspaceCloud(NextGen)yesyesyesyesyesyesyRackspaceCloud(FirstGen)yesyesyesyesyesyesyRimuHostingyesyesyesyesnonoyScalewayyesyesyesyesnonoyServerLoveyesyesyesyesnonoyskalicloudyesyesyesyesnonoySoftLayeryesyesyesyesyesyesyvCloudyesyesyesyesnonoyUpcloudyesyesyesyesnonoyVCLyesyesnoyesnonoyvCloudyesyesyesyesnonoyVoxelVoxCLOUDyesyesyesyesnonoyvps.
netyesyesyesyesnonoyVMwarevSphereyesyesyesyesyesyesyVultryesyesyesyesnonoySupportedMethods(BlockStorage)ProviderlistvolumescreatevolumedestroyvolumeattachvolumedetachvolumelAbiquononononononAliyunECSyesyesyesyesyesyPCextremeAuroraComputeyesyesyesyesyesn1.
1.
Main7ApacheLibcloudDocumentation,Release3.
3.
1Table3–continuedfrompreviouspageProviderlistvolumescreatevolumedestroyvolumeattachvolumedetachvolumelAzureVirtualmachinesyesyesyesyesyesnAzureVirtualmachinesyesyesyesyesyesyBlueboxBlocksnonononononBrightboxnonononononBSNLnonononononCloudscalenonononononCloudSigma(APIv2.
0)nonononononCloudStackyesyesyesyesyesnCloudwattyesyesyesyesyesyDigitalOceanyesyesyesyesyesyDimensionDatanonononononAmazonEC2yesyesyesyesyesyEnomalyElasticComputingPlatformnonononononElasticHostsnonononononEquinixMetalyesyesyesyesyesyEucalyptusyesyesyesyesyesyExoscaleyesyesyesyesyesnGandiyesyesyesyesyesnGoogleComputeEngineyesyesyesyesyesyGiGG8NodeProvideryesyesyesyesyesnGoGridnonononononGridscaleyesyesyesyesyesyHostVirtualnonononononIkoulayesyesyesyesyesnIndosatnonononononInternetSolutionsnonononononJoyentnonononononKamateranonononononKiliPublicCloudyesyesyesyesyesyKTUCloudyesyesyesyesyesnkubevirtyesyesyesyesyesnLibvirtnonononononLinodeyesyesyesyesyesnMaxihostnonononononMedOnenonononononNephoScalenonononononNimbusyesyesyesyesyesyNTTAmericanonononononNTTC-CISnonononononOnAppnononononon1and1nonononononOpenNebula(v3.
8)yesyesyesyesyesnOpenStackyesyesyesyesyesnOutscaleAPIyesyesyesyesyesyOutscaleINCyesyesyesyesyesyOutscaleSASyesyesyesyesyesyOvhyesyesyesyesyesyProtBricksyesyesyesyesyesnRackspaceCloud(NextGen)yesyesyesyesyesy8Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Table3–continuedfrompreviouspageProviderlistvolumescreatevolumedestroyvolumeattachvolumedetachvolumelRackspaceCloud(FirstGen)yesyesyesyesyesnRimuHostingnonononononScalewayyesyesyesnonoyServerLovenonononononskalicloudnonononononSoftLayernonononononvCloudnonononononUpcloudnonononononVCLnonononononvCloudnonononononVoxelVoxCLOUDnonononononvps.
netnonononononVMwarevSpherenonononononVultrnonononononSupportedMethods(Keypairmanagement)ProviderlistkeypairsgetkeypaircreatekeypairimportpublickeyfromstringimportAbiquonononononoAliyunECSnononononoPCextremeAuroraComputeyesyesyesyesnoAzureVirtualmachinesnononononoAzureVirtualmachinesnononononoBlueboxBlocksnononononoBrightboxnononononoBSNLnononononoCloudscalenononononoCloudSigma(APIv2.
0)nononononoCloudStackyesyesyesyesnoCloudwattyesyesyesyesnoDigitalOceanyesyesyesnonoDimensionDatanononononoAmazonEC2yesyesyesyesnoEnomalyElasticComputingPlatformnononononoElasticHostsnononononoEquinixMetalyesnoyesnonoEucalyptusyesyesyesyesnoExoscaleyesyesyesyesnoGandiyesyesnoyesnoGoogleComputeEnginenononononoGiGG8NodeProvidernononononoGoGridnononononoGridscaleyesnonoyesnoHostVirtualnononononoIkoulayesyesyesyesnoIndosatnononononoInternetSolutionsnononononoJoyentnonononono1.
1.
Main9ApacheLibcloudDocumentation,Release3.
3.
1Table4–continuedfrompreviouspageProviderlistkeypairsgetkeypaircreatekeypairimportpublickeyfromstringimportKamateranononononoKiliPublicCloudyesyesyesyesnoKTUCloudyesyesyesyesnokubevirtnononononoLibvirtnononononoLinodenononononoMaxihostyesnoyesnonoMedOnenononononoNephoScalenononononoNimbusyesyesyesyesnoNTTAmericanononononoNTTC-CISnononononoOnAppyesyesnoyesno1and1nononononoOpenNebula(v3.
8)nononononoOpenStacknononononoOutscaleAPIyesyesyesnonoOutscaleINCyesyesyesyesnoOutscaleSASyesyesyesyesnoOvhyesyesnoyesnoProtBricksnononononoRackspaceCloud(NextGen)yesyesyesyesnoRackspaceCloud(FirstGen)nononononoRimuHostingnononononoScalewayyesnonoyesnoServerLovenononononoskalicloudnononononoSoftLayeryesyesyesyesnovCloudnononononoUpcloudnononononoVCLnononononovCloudnononononoVoxelVoxCLOUDnononononovps.
netnononononoVMwarevSpherenononononoVultryesnoyesnonoLoadBalancer10Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ProviderMatrixProviderDocu-menta-tionProviderConstantSupportedRegionsModuleClassNameAmazonAp-plicationLoadBalancingALBsingleregiondriverlibcloud.
loadbalancer.
drivers.
albApplicationLBDriverAliyunServerLoadBalancerALIYUN_SLBsingleregiondriverlibcloud.
loadbalancer.
drivers.
slbSLBDriverBrightboxBRIGHT-BOXsingleregiondriverlibcloud.
loadbalancer.
drivers.
brightboxBrightboxLBDriverCloudStackCLOUD-STACKsingleregiondriverlibcloud.
loadbalancer.
drivers.
cloudstackCloudStackLBDriverDimensionDataLoadBalancerClickDIMEN-SION-DATAsingleregiondriverlibcloud.
loadbalancer.
drivers.
dimensiondataDimensionDataLBDriverAmazonElasticLoadBalancingClickELBsingleregiondriverlibcloud.
loadbalancer.
drivers.
elbElasticLBDriverGoogleCom-puteEngineLoadBalancerClickGCEsingleregiondriverlibcloud.
loadbalancer.
drivers.
gceGCELBDriverGoGridLBGOGRIDsingleregiondriverlibcloud.
loadbalancer.
drivers.
gogridGoGridLBDriverNinefoldLBNINE-FOLDsingleregiondriverlibcloud.
loadbalancer.
drivers.
ninefoldNinefoldLBDriverNTTC-CISLoadBalancerClickNTTCISsingleregiondriverlibcloud.
loadbalancer.
drivers.
nttcisNttCisLBDriverRackspaceLBRACKSPACEdfw,hkg,iad,lon,ord,sydlibcloud.
loadbalancer.
drivers.
rackspaceRackspaceLBDriverSoftlayerLoadBal-ancingSOFT-LAYERsingleregiondriverlibcloud.
loadbalancer.
drivers.
softlayerSoftlayerLBDriver1.
1.
Main11ApacheLibcloudDocumentation,Release3.
3.
1SupportedMethodsProvidercreatebalancerlistbal-ancerslistmem-bersattachmemberdetachmemberattachcom-putenodeAmazonApplicationLoadBalancingyesyesnonononoAliyunServerLoadBal-anceryesyesyesyesyesyesBrightboxyesyesyesyesyesyesCloudStackyesyesyesyesyesnoDimensionDataLoadBal-anceryesyesyesyesyesnoAmazonElasticLoadBal-ancingyesyesyesnoyesyesGoogleComputeEngineLoadBalanceryesyesyesyesyesyesGoGridLByesyesyesyesyesnoNinefoldLByesyesyesyesyesnoNTTC-CISLoadBalanceryesyesyesyesyesnoRackspaceLByesyesyesyesyesnoSoftlayerLoadBalancingnoyesyesyesyesnoObjectStorage12Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ProviderMatrixProviderDoc-u-men-ta-tionProviderCon-stantSupportedRegionsModuleClassNameAliyunOSSALIYUN_OSSsingleregiondriverlibcloud.
storage.
drivers.
ossOSSStorageDriverPCex-tremeAu-ro-raOb-jectsClickAU-RO-RAOB-JECTSsingleregiondriverlibcloud.
storage.
drivers.
auroraobjectsAuroraObjectsStorageMi-crosoftAzure(blobs)ClickAZURE_BLOBSsingleregiondriverlibcloud.
storage.
drivers.
azure_blobsAzureBlobsStorageDriBack-blazeB2ClickBACK-BLAZE_B2singleregiondriverlibcloud.
storage.
drivers.
backblaze_b2BackblazeB2StorageDrCloud-FilesCLOUD-FILESdfw,hkg,iad,lon,ord,sydlibcloud.
storage.
drivers.
cloudfilesCloudFilesStorageDriDigi-talO-ceanSpacesClickDIG-I-TALO-CEAN_SPACESsingleregiondriverlibcloud.
storage.
drivers.
digitalocean_spacesDigitalOceanSpacesStGoogleCloudStor-ageClickGOOGLE_STORAGEsingleregiondriverlibcloud.
storage.
drivers.
google_storageGoogleStorageDriverKTU-CloudStor-ageKTU-CLOUDdfw,hkg,iad,lon,ord,sydlibcloud.
storage.
drivers.
ktucloudKTUCloudStorageDriveLo-calStor-ageLO-CALsingleregiondriverlibcloud.
storage.
drivers.
localLocalStorageDriverMinIOStor-ageDriverClickMINIOsingleregiondriverlibcloud.
storage.
drivers.
minioMinIOStorageDriverNim-bus.
ioNIM-BUSsingleregiondriverlibcloud.
storage.
drivers.
nimbusNimbusStorageDriverNine-foldNINE-FOLDsingleregiondriverlibcloud.
storage.
drivers.
ninefoldNinefoldStorageDriveOpen-ClickOPEN-dfw,hkg,iad,lon,ord,sydlibcloud.
OpenStackSwiftStorag1.
1.
Main13ApacheLibcloudDocumentation,Release3.
3.
1SupportedMethods(Main)ProviderlistcontainerslistobjectscreatecontainerdeletecontaineruploadobjectstreaminAliyunOSSyesyesyesyesyesyesPCextremeAuroraObjectsyesyesyesyesyesyesMicrosoftAzure(blobs)yesyesyesyesyesyesBackblazeB2yesyesyesyesyesyesCloudFilesyesyesyesyesyesyesDigitalOceanSpacesyesyesyesyesyesyesGoogleCloudStorageyesyesyesyesyesyesKTUCloudStorageyesyesyesyesyesyesLocalStorageyesyesyesyesyesyesMinIOStorageDriveryesyesyesyesyesyesNimbus.
ioyesnoyesnononoNinefoldyesyesyesyesyesyesOpenStackSwiftyesyesyesyesyesyesAmazonS3yesyesyesyesyesyesAmazonS3(ap-northeast-1)yesyesyesyesyesyesAmazonS3(ap-northeast-1)yesyesyesyesyesyesAmazonS3(ap-northeast-2)yesyesyesyesyesyesAmazonS3(ap-south-1)yesyesyesyesyesyesAmazonS3(ap-southeast-1)yesyesyesyesyesyesAmazonS3(ap-southeast-2)yesyesyesyesyesyesAmazonS3(ca-central-1)yesyesyesyesyesyesAmazonS3(cn-north-1)yesyesyesyesyesyesAmazonS3(cn-northwest-1)yesyesyesyesyesyesAmazonS3(eu-central-1)yesyesyesyesyesyesAmazonS3(eu-north-1)yesyesyesyesyesyesAmazonS3(eu-west-1)yesyesyesyesyesyesAmazonS3(eu-west-2)yesyesyesyesyesyesCephRGWyesyesyesyesyesyesRGWOutscaleyesyesyesyesyesyesAmazonS3(sa-east-1)yesyesyesyesyesyesAmazonS3(us-east-2)yesyesyesyesyesyesAmazonS3(us-gov-west-1)yesyesyesyesyesyesAmazonS3(us-west-1)yesyesyesyesyesyesAmazonS3(us-west-2)yesyesyesyesyesyesSupportedMethods(CDN)ProviderenablecontainercdnenableobjectcdngetcontainercdnURLgetobjectcdnURLAliyunOSSnonononoPCextremeAuroraObjectsyesyesyesyesMicrosoftAzure(blobs)nononoyesBackblazeB2nonononoCloudFilesyesnoyesyesDigitalOceanSpacesnonononoGoogleCloudStoragenonononoKTUCloudStorageyesnoyesyesContinuedonnextpage14Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Table6–continuedfrompreviouspageProviderenablecontainercdnenableobjectcdngetcontainercdnURLgetobjectcdnURLLocalStorageyesyesyesyesMinIOStorageDrivernonononoNimbus.
iononononoNinefoldnoyesnoyesOpenStackSwiftyesnoyesyesAmazonS3nononoyesAmazonS3(ap-northeast-1)nononoyesAmazonS3(ap-northeast-1)nononoyesAmazonS3(ap-northeast-2)nononoyesAmazonS3(ap-south-1)nononoyesAmazonS3(ap-southeast-1)nononoyesAmazonS3(ap-southeast-2)nononoyesAmazonS3(ca-central-1)nononoyesAmazonS3(cn-north-1)nononoyesAmazonS3(cn-northwest-1)nononoyesAmazonS3(eu-central-1)nononoyesAmazonS3(eu-north-1)nononoyesAmazonS3(eu-west-1)nononoyesAmazonS3(eu-west-2)nononoyesCephRGWnonononoRGWOutscalenonononoAmazonS3(sa-east-1)nononoyesAmazonS3(us-east-2)nononoyesAmazonS3(us-gov-west-1)nononoyesAmazonS3(us-west-1)nononoyesAmazonS3(us-west-2)nononoyesContainer1.
1.
Main15ApacheLibcloudDocumentation,Release3.
3.
1ProviderMatrixProviderDocu-menta-tionProviderConstantSup-portedRegionsModuleClassNameDockerClickDOCKERsingleregiondriverlibcloud.
container.
drivers.
dockerDockerContainerDriverAmazonElasticContainerServiceClickECSsingleregiondriverlibcloud.
container.
drivers.
ecsElasticContainerDriverGoogleContainerEngineClickGKEsingleregiondriverlibcloud.
container.
drivers.
gkeGKEContainerDriverJoyentTritonClickJOYENTsingleregiondriverlibcloud.
container.
drivers.
joyentJoyentContainerDriverKubernetesClickKUBER-NETESsingleregiondriverlibcloud.
container.
drivers.
kubernetesKubernetesContainerDriverLXDLXDsingleregiondriverlibcloud.
container.
drivers.
lxdLXDContainerDriverRancherClickRANCHERsingleregiondriverlibcloud.
container.
drivers.
rancherRancherContainerDriverSupportedMethodsProviderin-stallim-agelistim-agesde-ploycon-tainergetcon-tainerstartcon-tainerstopcon-tainerrestartcon-tainerde-stroycon-tainerlistcon-tain-erslistlo-ca-tionscre-ateclus-terde-stroyclus-terlistclus-tersDockeryesyesyesyesyesyesyesyesyesnonononoAmazonElasticContainerServicenoyesyesyesyesyesyesyesyesnoyesyesyesGoogleContainerEnginenonoyesyesnononoyesyesnoyesyesyesJoyentTri-tonyesyesyesyesyesyesyesyesyesnonononoKuber-netesnonoyesyesnononoyesyesnoyesyesyesLXDyesyesyesyesyesyesyesyesyesnonononoRanchernonoyesyesyesyesnoyesyesnonononoBackup16Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ProviderMatrixProviderDocu-menta-tionProviderConstantSup-portedRegionsModuleClassNameDimensionDataBackupClickDIMEN-SION-DATAsingleregiondriverlibcloud.
backup.
drivers.
dimensiondataDimensionDataBackupDriverAmazonEBSBackupDriverEBSsingleregiondriverlibcloud.
backup.
drivers.
ebsEBSBackupDriverGoogleComputeEngineBackupDriverGCEsingleregiondriverlibcloud.
backup.
drivers.
gceGCEBackupDriverSupportedMethodsProvidergetsup-portedtar-gettypeslisttar-getscre-atetar-getcre-atetar-getfromnodecre-atetargetfromstor-agecon-tainerup-datetar-getdeletetar-getlistre-cov-erypointsre-covertar-getre-covertar-getoutofplacelisttar-getjobscre-atetar-getjobre-sumetar-getjobsus-pendtar-getjobcan-celtar-getjobDi-men-sionDataBackupyesyesyesyesnoyesyesyesyesyesyesyesyesyesyesAma-zonEBSBackupDriveryesyesyesyesnoyesyesyesyesyesyesyesyesyesyesGoogleCom-puteEn-gineBackupDriveryesyesyesyesnoyesyesyesyesyesyesyesyesyesyesDNS1.
1.
Main17ApacheLibcloudDocumentation,Release3.
3.
1ProviderMatrixProviderDocu-menta-tionProviderConstantSupportedRegionsModuleClassNameAuro-raDNSClickAURO-RADNSsingleregiondriverlibcloud.
dns.
drivers.
auroradnsAuroraDNSDriverBuddyNSDNSClickBUDDYNSsingleregiondriverlibcloud.
dns.
drivers.
buddynsBuddyNSDNSDriverCloudFlareDNSClickCLOUD-FLAREsingleregiondriverlibcloud.
dns.
drivers.
cloudflareCloudFlareDNSDriverDigitalO-ceanClickDIGI-TAL_OCEANsingleregiondriverlibcloud.
dns.
drivers.
digitaloceanDigitalOceanDNSDriverDNSimpleClickDNSIMPLEsingleregiondriverlibcloud.
dns.
drivers.
dnsimpleDNSimpleDNSDriverDurableDNSClickDURABLEDNSsingleregiondriverlibcloud.
dns.
drivers.
durablednsDurableDNSDriverGandiDNSGANDIsingleregiondriverlibcloud.
dns.
drivers.
gandiGandiDNSDriverGandiLiveDNSGANDI_LIVEsingleregiondriverlibcloud.
dns.
drivers.
gandi_liveGandiLiveDNSDriverGoDaddyDNSClickGODADDYsingleregiondriverlibcloud.
dns.
drivers.
godaddyGoDaddyDNSDriverGoogleDNSClickGOOGLEsingleregiondriverlibcloud.
dns.
drivers.
googleGoogleDNSDriverHostVirtualDNSClickHOSTVIR-TUALsingleregiondriverlibcloud.
dns.
drivers.
hostvirtualHostVirtualDNSDriverLinodeDNSLINODEsingleregiondriverlibcloud.
dns.
drivers.
linodeLinodeDNSDriverLiquidwebDNSClickLIQUID-WEBsingleregiondriverlibcloud.
dns.
drivers.
liquidwebLiquidWebDNSDriverLuadnsClickLUADNSsingleregiondriverlibcloud.
dns.
drivers.
luadnsLuadnsDNSDriverNFSNDNSClickNFSNsingleregiondriverlibcloud.
dns.
drivers.
nfsnNFSNDNSDriverNS1DNSNSONEsingleregiondriverlibcloud.
dns.
drivers.
nsoneNsOneDNSDriverOnAppClickONAPPsingleregiondriverlibcloud.
dns.
drivers.
onappOnAppDNSDriverPointDNSClickPOINTDNSsingleregiondriverlibcloud.
dns.
drivers.
pointdnsPointDNSDriverPow-erDNSClickPOW-ERDNSsingleregiondriverlibcloud.
dns.
drivers.
powerdnsPowerDNSDriverRackspaceDNSRACKSPACEuk,uslibcloud.
dns.
drivers.
rackspaceRackspaceDNSDriverRcodeZeroDNSClickRCODEZEROsingleregiondriverlibcloud.
dns.
drivers.
rcodezeroRcodeZeroDNSDriverRoute53DNSROUTE53singleregiondriverlibcloud.
dns.
drivers.
route53Route53DNSDriverSoftlayerDNSSOFT-LAYERsingleregiondriverlibcloud.
dns.
drivers.
softlayerSoftLayerDNSDriverVultrDNSClickVULTRsingleregiondriverlibcloud.
dns.
drivers.
vultrVultrDNSDriverWorldWideDNSClickWORLD-WIDEDNSsingleregiondriverlibcloud.
dns.
drivers.
worldwidednsWorldWideDNSDriverZerigoDNSZERIGOsingleregiondriverlibcloud.
dns.
drivers.
zerigoZerigoDNSDriver18Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1SupportedMethodsProviderlistzoneslistrecordscreatezoneupdatezonecreaterecordupdaterecorddeletezonedeleterecordAuroraDNSyesyesyesnoyesyesyesyesBuddyNSDNSyesnoyesnononoyesnoCloudFlareDNSyesyesyesyesyesyesyesyesDigitalO-ceanyesyesyesnoyesyesyesyesDNSimpleyesyesyesnoyesyesyesyesDurableDNSyesyesyesyesyesyesyesyesGandiDNSyesyesyesyesyesyesyesyesGandiLiveDNSyesyesyesnoyesyesnoyesGoDaddyDNSyesyesnonoyesyesyesnoGoogleDNSyesyesyesnoyesnoyesyesHostVirtualDNSyesyesyesyesyesyesyesyesLinodeDNSyesyesyesyesyesyesyesyesLiquidwebDNSyesyesyesnoyesyesyesyesLuadnsyesyesyesnoyesnoyesyesNFSNDNSnoyesnonoyesnonoyesNS1DNSyesyesyesnoyesyesyesyesOnAppyesyesyesnoyesyesyesyesPointDNSyesyesyesyesyesyesyesyesPowerDNSyesyesyesnoyesyesyesyesRackspaceDNSyesyesyesyesyesyesyesyesRcodeZeroDNSyesyesyesyesyesyesyesyesRoute53DNSyesyesyesnoyesyesyesyesSoftlayerDNSyesyesyesnoyesyesyesyesVultrDNSyesyesyesnoyesnoyesyesWorldWideDNSyesyesyesyesyesyesyesyesZerigoDNSyesyesyesyesyesyesyesyesZonomiDNSyesyesyesnoyesnoyesyes1.
1.
3SupportedPythonVersionsCurrentlySupportedPythonVersionsLibcloudfromv3.
0.
0andabovesupportsCPython3.
5,3.
6,3.
7,3.
8andPyPy3.
1.
1.
Main19ApacheLibcloudDocumentation,Release3.
3.
1ThosearealsotheversionswecontinuouslyrunourtestswithonTravisCI(https://travis-ci.
org/apache/libcloud).
Python2.
7andPython3.
4SupportforCPython2.
7,CPython3.
4andPyPy2wasdroppedinLibcloudv3.
0.
0.
IfyoustillneedtouseLibcloudwithoneofthoseversions,youcanuseLibcloudv2.
8.
0whichisthelastreleasewhichsupportsthosePythonversions.
OlderPythonVersionsSupportforPython2.
4hasbeendroppedinLibcloud0.
4.
0,Python2.
5in2016andPython2.
6and3.
3inLibcloud2.
3.
0in2018.
KeepinmindthatthoseLibcloudversionsarenowveryoldandoutofdateandshouldn'tbeused.
1.
1.
4ThirdPartyDriversLibcloudincludesmostofthedriversinitscore,butsomeprovidersanddevelopersforvariousreasonsdecidetoreleasetheirdriverasaseparatePyPipackage.
Thispageliststhosethirdpartydrivers.
Fordocumentationandusageexamples,pleaserefertothethirdpartydriverdocumentation(ifavailable).
Keepinmindthatthosedriversarenotpartofthecoreandsuchwecan'tguaranteethequalityofthosedrivers.
ComputeProviderPyPipackageSourcecodeStratusLabstratuslab-libcloud-driversStratusLab/libcloud-driversSnoozemsimonin/snooze-libcloudDNSProviderPyPipackageSourcecodeDNSMadeEasylibcloud-dnsmadeeasymoses-palmer/libcloud-dnsmadeeasy1.
1.
5ComputeThecomputecomponentoflibcloudallowsyoutomanagecloudandvirtualserversofferedbydifferentproviders,morethan20intotal.
Inadditiontomanagingtheserversthiscomponentalsoallowsyoutorundeploymentscriptsonnewlycreatedservers.
Deploymentor"bootstrap"scriptsallowyoutoexecutearbitraryshellcommands.
Thisfunctionalityisusuallyusedtoprepareyourfreshlycreatedserver,installyourSSHkey,andrunacongurationmanagementtool(suchasPuppet,Chef,orcfengine)onit.
Besidesmanagingcloudandvirtualservers,computecomponentalsoallowsyoutomanagecloudblockstorage(nottobeconfusedwithcloudobjectstorage)forproviderswhichsupportit.
BlockstoragemanagementlivesundercomputeAPI,becauseitisinmostcasestightlycoupledwithcomputeresources.
20Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1TerminologyComputeNode-representsacloudorvirtualserver.
NodeSize-representsnodehardwareconguration.
UsuallythisisamountoftheavailableRAM,bandwidth,CPUspeedanddisksize.
Mostofthedriversalsoexposeanhourlyprice(indollars)fortheNodeofthissize.
NodeImage-representsanoperatingsystemimage.
NodeLocation-representsaphysicallocationwhereaservercanbe.
NodeState-representsanodestate.
Standardstatesare:running,rebooting,terminated,pending,stopped,suspended,paused,erro,unknown.
KeyPairManagementKeyPair-representsanSSHkeypairobject.
BlockStorageStorageVolume-representsablockstoragevolumeVolumeSnapshot-representsapointintimesnapshotofaStorageVolumeSupportedProvidersForalistofsupportedprovidersseesupportedproviderspage.
PricingFormajorityofthecomputeprovidersLibcloudprovidesestimatedpricinginformationwhichtellsusershowmuchitcostsperhourtorunaNodewithaspecicNodeSize.
Formoreinformation,pleaseseethepricingpage.
DeploymentLibcloudprovidesdeploymentfunctionalitywhichmakesbootstrappingaservereasier.
Itallowsyoutocreateaserverandrunshellcommandsonitoncetheserverhasbeencreated.
Formoreinformationandexamples,pleaseseethedeploymentpage.
SSHkeypairmanagementComputeAPIalsoallowsyoutomanageyourSSHkeypairs.
Formoreinformationandexamples,pleaseseethekeypairmanagementpage.
1.
1.
Main21ApacheLibcloudDocumentation,Release3.
3.
1ExamplesWehaveexamplesofseveralcommonpatterns.
APIReferenceForafullreferenceofalltheclassesandmethodsexposedbythecomputeAPI,seethispage.
1.
1.
6ObjectStorageNote:ObjectStorageAPIisavailableinLibcloud0.
5.
0andhigher.
StorageAPIallowsyoutomanagecloudobjectstorage(nottobeconfusedwithcloudblockstorage)andservicessuchasAmazonS3,RackspaceCloudFiles,GoogleStorageandothers.
Besidesmanagingcloudobjectstorage,storagecomponentalsoexposessimpleCDNmanagementfunctionality.
TerminologyContainer-representsacontainerwhichcancontainmultipleobjects.
Youcanthinkofitasafolderonalesystem.
Differencebetweencontainerandafolderonlesystemisthatcontainerscannotbenested.
SomeAPIsandproviders(e.
g.
AWS)refertoitasaBucket.
Object-representsanobjectorsocalledBLOB.
SupportedProvidersForalistofsupportedprovidersseesupportedproviderspage.
ExamplesWehaveexamplesofseveralcommonpatterns.
APIReferenceForafullreferenceofalltheclassesandmethodsexposedbythestorageAPI,seethispage.
1.
1.
7LoadBalancerNote:LoadBalancerAPIisavailableinLibcloud0.
5.
0andhigher.
LoadBalancerAPIallowsyoutomanageLoadBalancersasaserviceandservicessuchasRackspaceCloudLoadBalancers,GoGridLoadBalancersandNinefoldLoadBalancers.
22Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1TerminologyLoadBalancer-representsaloadbalancerinstance.
Member-representsaloadbalancermember.
Algorithm-representsaloadbalancingalgorithm(round-robin,random,leastconnections,etc.
).
SupportedProvidersForalistofsupportedprovidersseesupportedproviderspage.
ExamplesWehaveexamplesofseveralcommonpatterns.
APIReferenceForafullreferenceofalltheclassesandmethodsexposedbytheloadbalancerAPI,seethispage.
1.
1.
8DNSNote:DNSAPIisavailableinLibcloud0.
6.
0andhigher.
DNSAPIallowsyoutomanageDNSasAServiceandservicessuchasZerigoDNS,RackspaceCloudDNSandothers.
TerminologyZone-RepresentsaDNSzoneorsocalleddomain.
Record-RepresentsaDNSrecord.
EachrecordbelongstoaZoneandhasatypeanddataattribute.
Valueofthedataattributedependsontherecordtype.
Somerecordtypesalsorequireusertoassociateadditionalattributeswiththem.
Thoseadditionalattributesarestoredintheextraattribute(dictionary)ontherecordobject.
AnexampleincludeMXandSRVrecordtypewhichalsocontainsapriority.
RecordType-RepresentsaDNSrecordtype(A,AAAA,MX,TXT,SRV,PTR,NS,etc.
)ZoneType-Eachzonehasatypeattribute.
Thisattributerepresentsazonetype.
Typecaneitherbemaster(alsocalledprimary)orslave(alsocalledsecondary).
SupportedProvidersForalistofsupportedprovidersseesupportedproviderspage.
ExamplesWehaveexamplesofseveralcommonpatterns.
1.
1.
Main23ApacheLibcloudDocumentation,Release3.
3.
1APIReferenceForafullreferenceofalltheclassesandmethodsexposedbytheDNSAPI,seethispage.
1.
1.
9ContainerNote:ContainerAPIisavailableinLibcloud1.
0.
0-pre1andhigher.
Note:ContainerAPIiscurrentlyinanEXPERIMENTALstate.
ContainerAPIallowsuserstoinstallanddeploycontainersontocontainerbasedvirtualizationplatforms.
Thisisdesignedtotargetbothon-premiseinstallationsofsoftwarelikeDockeraswellasinterfacingwithCloudServiceProvidersthatofferContainer-as-a-ServiceAPIs.
Foraworkingexampleofthecontainerdriverwithclustersupport,seetheexampleforAmazon'sElasticContainerService:fromlibcloud.
container.
baseimportContainerImagefromlibcloud.
container.
typesimportProviderfromlibcloud.
container.
providersimportget_drivercls=get_driver(Provider.
ECS)conn=cls(access_id='SDHFISJDIFJSIDFJ',secret='THIS_IS)+_MY_SECRET_KEY+I6TVkv68o4H',region='ap-southeast-2')forclusterinconn.
list_clusters():print(cluster.
name)ifcluster.
name=='default':container=conn.
deploy_container(cluster=cluster,name='my-simple-app',image=ContainerImage(id=None,name='simple-app',path='simple-app',version=None,driver=conn))Foranexampleofthesimplecontainersupport,seetheDockerexample:fromlibcloud.
container.
typesimportProviderfromlibcloud.
container.
providersimportget_drivercls=get_driver(Provider.
DOCKER)driver=cls(host='https://198.
61.
239.
128',port=4243,key_file='key.
pem',cert_file='cert.
pem')(continuesonnextpage)24Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)image=driver.
install_image('tomcat:8.
0')container=driver.
deploy_container('tomcat',image)DriversContainer-as-a-ServiceproviderswillimplementtheContainerDriverclasstoprovidefunctionalityfor:ListingdeployedcontainersStarting,stoppingandrestartingcontainers(wheresupported)DestroyingcontainersCreating/deployingcontainersListingcontainerimagesInstallingcontainerimages(pullinganimagefromalocalcopyorremoterepository)DriverbaseAPIdocumentationisfoundhere:ContainerDriver-AdriverforinterfacingtoacontainerproviderSimpleContainerSupportContainerImage-Representsanimagethatcanbedeployed,likeanapplicationoranoperatingsystemContainer-RepresentsadeployedcontainerimagerunningonacontainerhostClusterSuppportClustersupportextendsonthebasicdriverfunctions,butwheredriversimplementtheclass-levelattributesup-ports_clustersasTrueclustersmaybelisted,createdanddestroyed.
Whencontainersaredeployed,thetargetclustercanbespecied.
ContainerCluster-RepresentsadeployedcontainerimagerunningonacontainerhostClusterLocation-RepresentsalocationforclusterstobedeployedBootstrappingDockerwithComputeDriversThecomputeandcontainerdriverscanbecombinedusingthedeploymentfeatureofthecomputedrivertobootstrapaninstallationofacontainervirtualizationproviderlikeDocker.
ThenusingtheContainerdriver,youcanconnecttothatAPIandinstallimagesanddeploycontainers.
SupportedProvidersForalistofsupportedprovidersseesupportedproviderspage.
ExamplesWehaveexamplesofseveralcommonpatterns.
1.
1.
Main25ApacheLibcloudDocumentation,Release3.
3.
1APIReferenceForafullreferenceofalltheclassesandmethodsexposedbytheContainerAPI,seethispage.
UtilityClassesTherearesomeutilityclassesforexample,aDockerHubAPIclientforfetchingimagesanditeratingthroughreposi-toriesseethispage.
1.
1.
10BackupNote:BackupAPIisavailableinLibcloud1.
0.
0-pre1andhigher.
Note:Thisdriverisexperimental-pleaseusetotestfunctionalityanddevelopnewdriverinstances,notforproduc-tionuse.
BackupAPIallowsyoutomanageBackupasAServiceandservicessuchasEBSSnaps,GCEvolumesnapanddimensiondatabackup.
TerminologyBackupTarget-Representsabackuptarget,likeaVirtualMachine,afolderoradatabase.
BackupTargetRecoveryPoint-Representsacopyofthedatainthetarget,arecoverypointcanberecoveredtoabackuptarget.
Aninplacerestoreiswhereyourecovertothesametargetandanout-of-placerestoreiswhereyourecovertoanothertarget.
BackupTargetJob-Representsabackupjobrunningonbackuptarget.
SupportedProvidersForalistofsupportedprovidersseesupportedproviderspage.
ExamplesWehaveexamplesofseveralcommonpatterns.
APIReferenceForafullreferenceofalltheclassesandmethodsexposedbytheBackupAPI,seethispage.
1.
1.
11TroubleshootingThispagecontainsvarioustipswhichcanhelpyoutroubleshootanddebugcodewithinterfaceswithlibcloud.
26Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1DebuggingNote:IfyouaresharingdebugoutputonanypublicmediumsuchasourIRCchanneloranissuetrackerusingPastebin,GithubGistsorasimilarservice,makesuretoremoveyourcredentialsandanyotherdatayouconsiderprivatefromtheoutput.
Libcloudhasaspecialdebugmodewhichwhenenabled,logsalltheoutgoingHTTPrequestsandalltheincomingHTTPresponses.
OutputalsoincludescURLcommandswhichcanbeusedtore-producetherequests.
Whenthismodeisenabledandparamikolibraryisinstalled(usedfordeployment),paramikolibraryloglevelissettoDEBUGwhichhelpswithdebuggingthedeploymentrelatedissues.
Tomakethedebuggingeasier,Libcloudwillalsoautomaticallydecompresstheresponsebody(ifcompressed)beforeloggingit.
Toenableit,setLIBCLOUD_DEBUGenvironmentvariableandmakeitpointtoalewherethedebugoutputshouldbesaved.
IftheAPIreturnsJSONorXMLintheresponsebodywhichisnothumanfriendly,youcanalsosetLIBCLOUD_DEBUG_PRETTY_PRINT_RESPONSEenvironmentvariablewhichwillcausetheJSONorXMLtobebeautied/formatedsoit'seasierforhumanstoreadit.
Keepinmindthatthisonlyworksfornon-chunkedresponses.
Example1-LoggingoutputtostandarderrorNote:SomeLinuxdistributionsdon'tallow/dev/{stderr,stdout}tobeopenedinappendmodewhichmeansparamikologgerwillreturnanderrorthatitcan'tlogtothatle.
Insuchscenario,it'srecommendedyouspecifyactuallepathandthenyoucanuse"tail-F"inanotherterminalwindowtoviewtheoutputinreal-time.
Ifyouwanttheoutputtobeloggedtothestandarderror(onLinux)youcansetitto/dev/stderr:LIBCLOUD_DEBUG=/dev/stderrpythonmy_script.
pyExampleoutput:begin4431824872requestcurl-i-XGET-H'Host:s3.
amazonaws.
com'-H'X-LC-Request-ID:4431824872'-H→'Content-Length:0'-H'User-Agent:libcloud/0.
6.
0-beta1(AmazonS3(standard))'→'https://s3.
amazonaws.
com:443/AWSAccessKeyId=foo&Signature=bar'begin4431824872:4431825232responseHTTP/1.
1200OKX-Amz-Id-2:1234Server:AmazonS3Transfer-Encoding:chunkedX-Amz-Request-Id:FFFFFFFFFFDate:Tue,01Nov201122:29:11GMTContent-Type:application/xml171→sada8932dsa8d30ikami→test343243232011-11-01T22:17:23.
000Z(continuesonnextpage)1.
1.
Main27ApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)0end4431824872:4431825232responseExample2-MakingJSON/XMLresponsehumanfriendlyNon-formattedJSONresponse:LIBCLOUD_DEBUG=/dev/stderrpythonmy_script.
pybegin23125648:23160304responseHTTP/1.
1200OKContent-Length:1572X-Compute-Request-Id:req-79ab42d8-a959-44eb-8dec-bc9458b2f4b3Server:nginx/1.
4.
7Connection:keep-aliveDate:Sat,06Sep201414:13:37GMTContent-Type:application/json{"servers":[{"status":"ACTIVE","updated":"2014-09-06T14:13:32Z","hostId":→"561d56de25c177c422278d7ca5f8b210118348040b12afbad06f278a","addresses":{"internet-→routable":[{"OS-EXT-IPS-MAC:mac_addr":"fa:16:3e:3f:c0:a1","version":4,"addr":→"10.
100.
100.
101","OS-EXT-IPS:type":"fixed"}]},"links":[{"href":"http://nova/v2/→d3b31ebfd32744d19d848f3e9c351869/servers/deb35f96-be41-431e-b931-6e615ec720f4","rel→":"self"},{"href":"http://nova/d3b31ebfd32744d19d848f3e9c351869/servers/deb35f96-→be41-431e-b931-6e615ec720f4","rel":"bookmark"}],"key_name":null,"image":{"id→":"e9537ddd-6579-4473-9898-d211ab90f6d3","links":[{"href":"http://nova/→d3b31ebfd32744d19d848f3e9c351869/images/e9537ddd-6579-4473-9898-d211ab90f6d3","rel→":"bookmark"}]},"OS-EXT-STS:task_state":null,"OS-EXT-STS:vm_state":"active",→"OS-SRV-USG:launched_at":"2014-09-06T14:13:32.
000000","flavor":{"id":"90c2a137-→611b-4dd2-9d65-d4a0b0858531","links":[{"href":"http://nova/→d3b31ebfd32744d19d848f3e9c351869/flavors/90c2a137-611b-4dd2-9d65-d4a0b0858531","rel→":"bookmark"}]},"id":"deb35f96-be41-431e-b931-6e615ec720f4","security_groups":[→{"name":"default"}],"OS-SRV-USG:terminated_at":null,"OS-EXT-AZ:availability_zone→":"nova","user_id":"06dda7c06aa246c88d7775d02bc119ac","name":"testlc2",→"created":"2014-09-06T14:13:12Z","tenant_id":"d3b31ebfd32744d19d848f3e9c351869",→"OS-DCF:diskConfig":"MANUAL","os-extended-volumes:volumes_attached":[],→"accessIPv4":"","accessIPv6":"","progress":0,"OS-EXT-STS:power_state":1,→"config_drive":"","metadata":{}}]}end23125648:23160304responseHumanfriendlyformattedJSONresponse:LIBCLOUD_DEBUG=/dev/stderrLIBCLOUD_DEBUG_PRETTY_PRINT_RESPONSE=1pythonmy_script.
pybegin41102928:41133624responseHTTP/1.
1200OKContent-Length:1572X-Compute-Request-Id:req-3ce8b047-55cd-4e20-bfeb-b65619696aecServer:nginx/1.
4.
7Connection:keep-aliveDate:Sat,06Sep201414:14:38GMTContent-Type:application/json(continuesonnextpage)28Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage){"servers":[{"OS-DCF:diskConfig":"MANUAL","OS-EXT-AZ:availability_zone":"nova","OS-EXT-STS:power_state":1,"OS-EXT-STS:task_state":null,"OS-EXT-STS:vm_state":"active","OS-SRV-USG:launched_at":"2014-09-06T14:13:32.
000000","OS-SRV-USG:terminated_at":null,"accessIPv4":"","accessIPv6":"","addresses":{"internet-routable":[{"OS-EXT-IPS-MAC:mac_addr":"fa:16:3e:3f:c0:a1","OS-EXT-IPS:type":"fixed","addr":"10.
100.
100.
101","version":4}]},"config_drive":"","created":"2014-09-06T14:13:12Z","flavor":{"id":"90c2a137-611b-4dd2-9d65-d4a0b0858531","links":[{"href":"http://nova/d3b31ebfd32744d19d848f3e9c351869/flavors/→90c2a137-611b-4dd2-9d65-d4a0b0858531","rel":"bookmark"}]},"hostId":"561d56de25c177c422278d7ca5f8b210118348040b12afbad06f278a","id":"deb35f96-be41-431e-b931-6e615ec720f4","image":{"id":"e9537ddd-6579-4473-9898-d211ab90f6d3","links":[{"href":"http://nova/d3b31ebfd32744d19d848f3e9c351869/images/→e9537ddd-6579-4473-9898-d211ab90f6d3","rel":"bookmark"}]},"key_name":null,"links":[{"href":"http://nova/v2/d3b31ebfd32744d19d848f3e9c351869/servers/→deb35f96-be41-431e-b931-6e615ec720f4","rel":"self"},{"href":"http://nova/d3b31ebfd32744d19d848f3e9c351869/servers/→deb35f96-be41-431e-b931-6e615ec720f4","rel":"bookmark"(continuesonnextpage)1.
1.
Main29ApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)}],"metadata":{},"name":"testlc2","os-extended-volumes:volumes_attached":[],"progress":0,"security_groups":[{"name":"default"}],"status":"ACTIVE","tenant_id":"d3b31ebfd32744d19d848f3e9c351869","updated":"2014-09-06T14:13:32Z","user_id":"06dda7c06aa246c88d7775d02bc119ac"}]}end41102928:41133624responseNon-formattedXMLresponse:LIBCLOUD_DEBUG=/dev/stderrpythonmy_script.
pybegin33145616:33126160responseHTTP/1.
1200OKX-Amzn-Requestid:e84f62d0-368e-11e4-820b-8bf013dc269eDate:Sun,07Sep201413:00:13GMTContent-Length:457Content-Type:text/xml→/hostedzone/Z14L0C73CHH1DNexample1.
com.
41747982-568E-0DFC-8C11-71C23757C740→test9false100end33145616:33126160responseHumanfriendlyformattedXMLresponse:LIBCLOUD_DEBUG=/dev/stderrLIBCLOUD_DEBUG_PRETTY_PRINT_RESPONSE=1pythonmy_script.
pybegin19444496:19425040responseHTTP/1.
1200OKX-Amzn-Requestid:01c02441-368f-11e4-b616-9b9bd7509a8fDate:Sun,07Sep201413:00:56GMTContent-Length:457Content-Type:text/xml/hostedzone/Z14L0C73CHH1DN(continuesonnextpage)30Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)example1.
com.
41747982-568E-0DFC-8C11-71C23757C740test9false100end19444496:19425040response1.
1.
12APIDocumentationForautomaticallygeneratedAPIdocumentationofallthemodules,pleasevisitthispage.
1.
1.
13FrequentlyAskedQuestions(FAQ)WhyaretheblockstoragerelatedmanagementmethodslocatedinthecomputeAPIBlockstoragerelatedmanagementmethodsarelocatedinthecomputeAPIbecauseinmostcasesblockstorageAPIistightlycoupledwiththecomputeAPImeaningthatyoucan'tmanageblockstorageindependentofthecomputeAPI.
Thisalsomakessensebecauseinmostcasesyouareonlyinterestedinattachingordetachingvolumesfromandtothecomputenodes.
WhataretheextensionmethodsandargumentsLibcloudactsasalowestcommondenominatorandexposesauniedbaseAPIwhichallowsyoutoworkwithmanydifferentcloudprovidersthroughasinglecodebase.
BeingalowestcommondenominatorbydenitionmeansthatnotallofthefunctionalityofferedbydifferentcloudserviceprovidersisavailablethroughabaseAPI.
Libcloudsolvesthisproblemandallowsusertoaccessproviderspecicfunctionalitythroughasocalledextensionmethodsandarguments.
Extensionmethodsandargumentsareallthemethodsandargumentswhichareprexedwithex_.
Extensionmethodsarethereforyourconvenience,butyoushouldbecarefulwhenyouusethembecausetheymakeswitchingorworkingwithmultipleprovidersharder.
HowdoItestifprovidercredentialsarevalidLibcloudmakesthewholeauthenticationprocesstransparenttotheuser.
Assuch,theeasiestwaytocheckifprovidercredentialsarevalidisbyinstantiatingadriverandcallingamethodwhichresultsinanHTTPcall.
Ifthecredentialsarevalid,methodwillreturnaresult,otherwiselibcloud.
common.
types.
InvalidCredsErrorexceptionwillbethrown.
1.
1.
Main31ApacheLibcloudDocumentation,Release3.
3.
1Anexampleofsuchmethodislibcloud.
compute.
base.
NodeDriver.
list_nodes().
Keepinmindthatdependingontheaccountstate,list_nodesmethodmightreturnalotofdata.
Ifyouwanttoavoidunnecessarilyfetchingalotofdata,youshouldndamethodspecictoyourproviderwhichissuesarequestwhichresultsinsmallamountofdatabeingretrieved.
IwantdoaddanewproviderdriverwhatshouldIdoFornowthebestthingtodoistolookatanexistingdriverandtestcasesforexamples.
Libcloudcurrentlysupportsmorethan60differentproviders.
Thismeanswehaveabroadrangeofexamplesofdiffer-entAPIsandauthenticationmethods.
APIsrangefromsimpleJSONbasedRESTAPIstoSOAPAPIs.
AuthenticationmethodsrangefromsimplesharedtokenanddigestauthtoHMACsignedrequests.
Iwanttoadd/proposeanewAPI,whatshouldIdoWearealwaysopentoacceptinganowtoplevelAPIaslongasitmatchesthefollowingcriteria:1.
APImustbeindentedtomanageanonlineinfrastructureorientedCloudservice2.
Similarserviceisofferedbymultipleproviders3.
It'spossibletobuildacommonAPIontopofservicesprovidedbydifferentservicesLibcloudcanbeusedwithmanydifferentprovidersandactsasalowestcommondenominatorwhichmakesthelastpointmostimportantone.
Sometimesitdoesn'tmakesensetobuildacommonLibcloudAPIevenifmultipleprovidersofferasimilarservice.
UsuallythecaseisthattheAPIsarevastlydifferentandtherearen'tenoughcommonpointswhichwouldallowustobuildacross-providerAPIwhichwouldstillprovideenoughvaluetotheenduser.
IftheAPImatchesthecriteriadenedabove,youshouldsendaproposaltoourmailinglistwherewecandiscussitfurther.
Ideally,theproposalshouldalsocontainaprototypeofadriverforatleasttwodifferentproviders.
ThishelpsusmakesurethattheAPIyouhavedesignedisnotbiasedtowardsasingleprovider.
HowdoIobtainLibcloudversionYoucanobtaincurrentlyactiveLibcloudversionbyaccessingthelibcloud.
__version__variable.
Example#1(commandline):python-c"importlibcloud;printlibcloud.
__version__"Example#2(code):importlibcloudlibcloud.
__version__1.
1.
14ChangesinApacheLibcloudv2.
0ReplacementofhttplibwithrequestsApacheLibcloudsupportsPython2.
6,2.
7-3.
3andbeyond.
ToachievethisapackagewaswrittenwithintheLibcloudlibrarytocreateagenericHTTPclientforPython2and3.
Thispackagehasacustomimplementationofacerticatestore,searchingandTLSpreferenceconguration.
OneofthersterrorstogreetnewusersofLibcloudwouldbe"NoCACerticateswerefoundinCA_CERTS_PATH.
".
.
.
32Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1In2.
0thisimplementationhasbeenreplacedwiththerequestspackage,andSSLvericationshouldworkagainstanypubliclysignedHTTPSendpointbydefault,withouthavingtoprovideaCAcertstore.
Otherchangesinclude:EnablingHTTPredirectsAllowingbothglobalanddriver-specicHTTPproxycongurationConsolidationoftheLibcloudHTTPSConnectionandLibcloudHTTPConnectionintoasingleclass,Libcloud-ConnectionSupportforstreamingresponsesSupportformockingHTTPresponseswithouthavingtomocktheConnectionclass10%typicalperformanceimprovementwiththeuseofpersistentTCPconnectionsforeachdriverinstanceAccesstothelow-levelTCPsessionisnolongeravailable.
Accessto.
read()onarawconnectionwillbindaroundrequestsbodyoriter_contentmethods.
TemporaryremovaloftheS3very-largelesupportusingthecustommulti-partAPIs.
Thiswillbeaddedbackinsubsequentreleasecandidates.
AllowredirectsisenabledbydefaultHTTPredirectsareallowedbydefaultin2.
0.
Todisableredirects,setthisglobalvariabletoFalse.
importlibcloud.
httplibcloud.
http.
ALLOW_REDIRECTS=FalseHTTP/HTTPSProxiesEnablingaHTTP/HTTPSproxyisstillsupportedandaccessedviathedriver'sconnectionpropertyorviathe'http_proxy'environmentvariable.
Applyingittoadriverwillsettheproxyforthatdriveronly,usingtheenvi-ronmentvariablewillmakeaglobalchange.
#option1importosos.
environ.
get('http_proxy','http://localhost:8888/')#option2driver.
connection.
connection.
set_http_proxy(proxy_url='http://localhost:8888')AddingsupportforPython3.
6anddeprecationofPython3.
2InApacheLibcloud2.
0.
0,Python3.
6isnowsupportedasaprimarydistribution.
Python3.
2supporthasbeendroppedinthisreleaseandusersshouldeitherupgradeto3.
3oranewerversionofPython.
SSLCAcerticatesarenowbundledwiththepackageInApacheLibcloud2.
0.
0,theMozillaTrustedRootStoreisbundledwiththepackage,aspartoftherequestspackagebundle.
ThismeansthatusersnolongerhavetosetthepathtoaCAleeitherviainstallingthecertipackage,downloadingaPEMleorprovidingadirectoryinanenvironmentvariable.
AllconnectionsinLibcloudwillassume1.
1.
Main33ApacheLibcloudDocumentation,Release3.
3.
1HTTPSbydefault,nowwith2.
0.
0,ifthoseHTTPSendpointshaveasignedcerticatewithatrustedCAauthority,theywillworkwithLibcloudbydefault.
Providingacustomclient-sidecerticate,forexampleforadevelopmentserveroraHTTPSproxyisstillsupportedgivenprovidingavaluetolibcloud.
security.
CA_CERTS_PATH.
ThiscodeexamplewouldsetaHTTP/HTTPSproxyanduseaclient-generatedcerticatetoverify.
importosos.
environ.
set('http_proxy','http://localhost:8888/')importlibcloud.
securitylibcloud.
security.
VERIFY_SSL_CERT=Truelibcloud.
security.
CA_CERTS_PATH='/Users/anthonyshaw/charles.
pem'ProvidingalistofCAtrustsisnolongersupportedInApacheLibcloud2.
0.
0ifyouprovidealistofmorethan1pathorcerticateleinlib-cloud.
security.
CA_CERTS_PATHyouwillreceiveawarningandonlytherstpathwillbeused.
Thispathshouldbetoa.
certor.
pemle.
TheenvironmentvariableREQUESTS_CA_BUNDLEcanbeusedtoaccesstherequestslibrary'slistoftrustedCAs.
PerformanceimprovementsandintroductionofsessionsEachinstanceoflibcloud.
common.
base.
ConnectionwillhaveaLibcloudConnectioninstanceundertheconnectionproperty.
In1.
5.
0=3.
4andPython2.
7.
9.
Inadditiontothat,yoursystemalsoneedstohavearecentversionofOpenSSLavailable.
Another(unsafeandunrecommended)optionistousessl.
PROTOCOL_SSLv23constantwhichwillletclientknowtopickthehighestprotocolversionwhichboththeclientandserversupport.
Ifthisconstantisselected,theclientwillbeselectingbetweenSSLv3.
0,TLSv1.
0,TLSv1.
1andTLSv1.
2.
KeepinmindthatSSLv3.
0isconsideredbrokenandunsafeandusingthisoptioncanresultinadowngradeattacksowestronglyrecommendNOTtouseit.
1.
1.
Main37ApacheLibcloudDocumentation,Release3.
3.
11.
1.
17UsinganHTTP/HTTPSproxyNote:1.
SupportforHTTPproxiesisavailableinLibcloudv0.
16.
0andhigher.
2.
SupportforHTTPSproxiesisavailableinLibcloudv2.
5.
1-devandhigher.
3.
Inversionspriortov2.
5.
1-dev,driver.
connection.
set_http_proxy()methodisbrokenandyouneedtousedriver.
connection.
connection.
set_http_proxy()instead.
LibcloudsupportsusinganHTTP/HTTPSproxyforoutgoingHTTPandHTTPSrequests.
ProxysupporthasbeentestedwiththefollowingPythonversions:Python2.
7/PyPyPython3.
4Python3.
6Python3.
7YoucanspecifywhichHTTP(s)proxytouseusingoneoftheapproachesdescribedbelow:Bysettinghttp_proxy/https_proxyenvironmentvariable(thissettingissystem/processwide)Bypassinghttp_proxyargumenttothelibcloud.
common.
base.
LibcloudConnectionclassconstructor(thissettingislocaltotheconnectioninstance)Bycallinglibcloud.
common.
base.
LibcloudConnection.
set_http_proxy()methodakadriver.
connection.
connection.
set_http_proxy(thissettingislocaltotheconnectioninstance)KnownlimitationsOnlyHTTPbasicaccessauthenticationproxyauthorizationmethodissupportedIfyouareusingHTTPSproxyyouneedtocongureLibcloudtouseCAcertbundlepathwhichisusedbytheproxyserver.
Seeanexamplebelowonhowtodothat.
ExamplesThissectionincludessomecodeexampleswhichshowhowtouseanHTTP(s)proxywithLibcloud.
1.
Usinghttp_proxy/htps_proxyenvironmentvariableBysettinghttp_proxy/https_proxyenvironmentvariableyoucanspecifywhichproxytouseforalloftheoutgoingrequestsforaduration/life-timeoftheprocessorascript.
Withoutauthentication(httpproxy):http_proxy=http://:pythonmy_script.
pyWithoutauthentication(httpsproxy):38Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1http_proxy=https://:pythonmy_script.
py#orhttps_proxy=https://:pythonmy_script.
pyWithbasicauthauthentication(httpproxy):http_proxy=http://:@:pythonmy_→script.
py2.
Passingproxy_urlargumenttotheconnectionclassconstructor.
note:Somedriversdon'tcorrectlypass``proxy_url``argumenttotheconnectionclassanddon'tsupport``proxy_url``constructorargument.
Ifyoupassthisargumenttothedriverconstructor,butitdoesn'tappeartobeworking,it'slikelythedriverdoesn'tsupportthismethod.
Insuchscenarios,youareadvisedtousesomeothermethodofsettingaproxy(e.
g.
bysettinganenvironmentvariableorbyusing:meth:`libcloud.
common.
base.
LibcloudConnection.
set_http_proxy`method).
Bypassingproxy_urlargumenttothelibcloud.
common.
base.
Connectionclassconstructor,youcanspecifywhichproxytouseforaparticularconnection.
fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_driverHTTP_PROXY_URL_NO_AUTH_1='http://:'HTTPS_PROXY_URL_NO_AUTH_1='https://:'cls=get_driver(Provider.
RACKSPACE)#1.
Usehttpproxydriver=cls('username','apikey',region='ord',proxy_url=HTTP_PROXY_URL_NO_AUTH_1)#2.
Usehttpsproxydriver=cls('username','apikey',region='ord',proxy_url=HTTPS_PROXY_URL_NO_AUTH_1)3.
Callingset_http_proxymethodCallingset_http_proxymethodallowsyoutospecifywhichproxytouseforalltheoutgoingrequestswhichfollowset_http_proxymethodcall.
Thismethodalsoallowsyoutouseadifferentproxyforeachrequestasshownintheexamplebelow.
frompprintimportpprintfromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_driver(continuesonnextpage)1.
1.
Main39ApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)HTTP_PROXY_URL_NO_AUTH_1='http://:'HTTP_PROXY_URL_NO_AUTH_2='http://:'HTTP_PROXY_URL_BASIC_AUTH='http://:@:'cls=get_driver(Provider.
RACKSPACE)driver=cls('username','apikey',region='ord')#Useproxy1forthisrequestdriver.
connection.
connection.
set_http_proxy(proxy_url=HTTP_PROXY_URL_NO_AUTH_1)pprint(driver.
list_nodes())#Useproxy2forthisrequestdriver.
connection.
connection.
set_http_proxy(proxy_url=HTTP_PROXY_URL_NO_AUTH_2)pprint(driver.
list_nodes())4.
UsinganHTTPSproxyThisexampleshowshowtouseanHTTPSproxy.
importos.
pathfrompprintimportpprintfromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_driverimportlibcloud.
securityHTTPS_PROXY_URL_NO_AUTH='https://:'#1.
UseacustomCAbundlewhichisusedbyproxyserver#ThisexampleusesCAcertbundleusedbymitmproxyproxyserverlibcloud.
security.
CA_CERTS_PATH=os.
path.
expanduser('~/.
mitmproxy/mitmproxy-ca-cert.
pem')#Useranhttpsproxyforsubsequentrequestscls=get_driver(Provider.
RACKSPACE)driver=cls('username','apikey')driver.
connection.
connection.
set_http_proxy(proxy_url=HTTPS_PROXY_URL_NO_AUTH)pprint(driver.
list_nodes())TouseanHTTPSproxy,youalsoneedtocongureLibcloudtouseCAcertbundlewhichisusedbytheHTTPSproxyserver,toverifyoutgoinghttpsrequest.
Ifyoudon'tdothat,youwillseeerrorssimilartotheonebelow:SSLError(1,u'[SSL:CERTIFICATE_VERIFY_FAILED]certificateverifyfailedKeepinmindthatyouwillalsoreceiveasimilarerrormessageifyoutrytouseHTTPproxyforHTTPSrequests.
1.
1.
18UsingLibcloudinmulti-threadedandasyncenvironmentsLibcloud'sprimarytaskistocommunicatewithdifferentproviderAPIsusingHTTP.
ThismeansmostoftheworkisnotCPUintensive,butperformingallthoseHTTPrequestsincludesalotofwaitingwhichmakesthelibraryI/Obound.
40Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Mostofthetimeyouwanttoperformmoreoperationsinparallelorjustwantyourcodetonishfaster(forexamplestartingalotofserversorperiodicallypollingfornodestatus).
ProblemslikethisareusuallysolvedusingthreadsorasynclibrariessuchasTwisted,Tornadoorgevent.
ThispagecontainssomeinformationandtipsabouthowtouseLibcloudinsuchenvironments.
Libcloudandthread-safetyImportantthingtokeepinmindwhendealingwiththreadsisthread-safety.
Libclouddriverinstanceisnotthreadsafe.
Thismeansifyoudon'twanttodealwithcomplex(andusuallyinefcient)lockingtheeasiestsolutionistocreateanewdriverinstanceinsideeachthread.
UsingLibcloudwithgeventgeventhasanabilitytomonkeypatchandreplacefunctionsinthePythonsocket,urllib2,httplibandtimemodulewithitsownfunctionswhichdon'tblock.
YouneedtodotwothingswhenyouwanttouseLibcloudwithgevent:Enablemonkeypatchingfromgeventimportmonkeymonkey.
patch_all()CreateaseparatedriverinstanceforeachGreenlet.
ThisisnecessarybecauseadriverinstancereusesthesameConnectionclass.
ForanexampleseeEfcientlydownloadmultiplelesusinggevent.
UsingLibcloudwithTwistedLibcloudhasnoTwistedsupportincludedinthecorewhichmeansyouneedtobecarefulwhenyouuseitwithTwistedandsomeotherasyncframeworks.
Ifyoudon'tuseitproperlyitcanblockthewholereactor(similarasanyotherblockinglibraryoralongCPU-intensivetask)whichmeanstheexecutionofotherpendingtasksintheeventqueuewillbeblocked.
AsimplesolutiontopreventblockingthereactoristorunLibcloudcallsinsideathread.
InTwistedthiscanbeachievedusingthreads.
deferToThreadwhichrunsaprovidedmethodinsidetheTwistedthreadpool.
Theexamplebelowdemonstrateshowtocreateanewnodeinsideathreadwithoutblockingthewholereactor.
from__future__importabsolute_importfrompprintimportpprint#pylint:disable=import-errorfromtwisted.
internetimportdefer,threads,reactorfromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_driver@defer.
inlineCallbacksdefcreate_node(name):node=yieldthreads.
deferToThread(_thread_create_node,name=name)(continuesonnextpage)1.
1.
Main41ApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)pprint(node)reactor.
stop()def_thread_create_node(name):Driver=get_driver(Provider.
RACKSPACE)conn=Driver('username','apikey')image=conn.
list_images()[0]size=conn.
list_sizes()[0]node=conn.
create_node(name=name,image=image,size=size)returnnodedefstop(*args,**kwargs):reactor.
stop()d=create_node(name='my-lc-node')d.
addCallback(stop)#pylint:disable=no-memberd.
addErrback(stop)#pylint:disable=no-memberreactor.
run()1.
1.
19WorkingwiththeobjectorientedAPIsTomakeiteasierfortheenduser,Libcloudcomponentsexposeafullyobject-orientedAPI.
ThismeansthatbesidesthedriverobjectyoualsoworkwithNodeImage,andNodeSizeobjectinthecomputeAPI,ContainerandObjectobjectintheStorageAPI,ZoneandRecordobjectintheDNSAPIandsoon.
Methodswhichoperateonthoseresourcesusuallyrequireyoutopassinaninstanceoftheresourceyouwanttomanipulateorworkwithandnotjustanid.
Toobtainareferencetothisresource,Libcloudproviderscorrespondinggetand/orlistmethods.
Acoupleofexamplesareshownbelow.
Example1-listingrecordsforazonewithaknownidfromlibcloud.
dns.
providersimportget_driverfromlibcloud.
dns.
typesimportProviderCREDENTIALS_ZERIGO=('email','apikey')ZONE_ID='example.
myzone.
com'Cls=get_driver(Provider.
ZERIGO)driver=Cls(*CREDENTIALS_ZERIGO)zone=driver.
get_zone(zone_id=ZONE_ID)records=driver.
list_records(zone=zone)Inthisexample,thedriver.
get_zone()methodcallresultsinanHTTPcall.
42Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Example2-creatinganEC2instancewithaknownNodeSizeandNodeImageidfromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_driverACCESS_ID='youraccessid'SECRET_KEY='yoursecretkey'IMAGE_ID='ami-c8052d8d'SIZE_ID='t1.
micro'cls=get_driver(Provider.
EC2)driver=cls(ACCESS_ID,SECRET_KEY,region="us-west-1")#Hereweselectsizeandimagesizes=driver.
list_sizes()images=driver.
list_images()size=[sforsinsizesifs.
id==SIZE_ID][0]image=[iforiinimagesifi.
id==IMAGE_ID][0]node=driver.
create_node(name='test-node',image=image,size=size)Inthisexample,boththedriver.
list_sizes()anddriver.
list_images()methodcallsresultinHTTPcalls.
Asyoucanseeabove,mostofthosegettermethodsretrieveextrainformationabouttheresourcefromtheproviderAPIandresultinanHTTPrequest.
Therearesomecaseswhenyoumightnotwantthis:Youdon'tcareifaresourcedoesn'texistYoudon'tcareabouttheextraattributesYouwanttoavoidanextraHTTPrequestYouwanttoavoidholdingareferencetotheresourceobjectIfthatistrueforyou,youcandirectlyinstantiatearesourcewithaknownid.
Youcanseehowtodothisintheexamplesbelow.
Example1-listingrecordsforazonewithaknownidfromlibcloud.
dns.
baseimportZonefromlibcloud.
dns.
providersimportget_driverfromlibcloud.
dns.
typesimportProviderCREDENTIALS_ZERIGO=('email','apikey')ZONE_ID='example.
myzone.
com'Cls=get_driver(Provider.
ZERIGO)driver=Cls(*CREDENTIALS_ZERIGO)zone=Zone(ZONE_ID,domain=None,type=None,ttl=None,driver=driver)records=driver.
list_records(zone=zone)1.
1.
Main43ApacheLibcloudDocumentation,Release3.
3.
1Example2-creatinganEC2instancewithaknownNodeSizeandNodeImageidfromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_driverfromlibcloud.
compute.
baseimportNodeSize,NodeImageACCESS_ID='youraccessid'SECRET_KEY='yoursecretkey'IMAGE_ID='ami-c8052d8d'SIZE_ID='t1.
micro'cls=get_driver(Provider.
EC2)driver=cls(ACCESS_ID,SECRET_KEY,region="us-west-1")size=NodeSize(id=SIZE_ID,name=None,ram=None,disk=None,bandwidth=None,price=None,driver=driver)image=NodeImage(id=IMAGE_ID,name=None,driver=driver)node=driver.
create_node(name='test-node',image=image,size=size)Example3-creatinganEC2instancewithanIAMprolefromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_driverACCESS_ID='youraccessid'SECRET_KEY='yoursecretkey'IAM_PROFILE='yourIAMprofilearnorIAMprofilename'IMAGE_ID='ami-c8052d8d'SIZE_ID='t1.
micro'cls=get_driver(Provider.
EC2)driver=cls(ACCESS_ID,SECRET_KEY,region="us-west-1")#Hereweselectsizeandimagesizes=driver.
list_sizes()images=driver.
list_images()size=[sforsinsizesifs.
id==SIZE_ID][0]image=[iforiinimagesifi.
id==IMAGE_ID][0]node=driver.
create_node(name='test-node',image=image,size=size,ex_iamprofile=IAM_PROFILE)1.
2DeveloperInformation1.
2.
1DeveloperInformationTypeAnnotationsPythontypeannotations/hintsforthebaseLibcloudcomputeAPIhavebeenaddedinv2.
8.
0.
44Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ThegoalbehindtypeannotationsistomakedeveloperliveseasierbyintroducingoptionalstatictypingforPythonprograms.
Thisallowsyoutocatchbugsandissueswhicharerelatedtovariabletypesearlierandfaster(akawhenyourunmypylocallyeithermanuallyorintegratedinyoureditor/IDEandalsoaspartofyouCI/CDbuildpipeline).
Anexampleofhowtousetypeannotationscorrectlyisshownbelow.
#LicensedtotheApacheSoftwareFoundation(ASF)underoneormore#contributorlicenseagreements.
SeetheNOTICEfiledistributedwith#thisworkforadditionalinformationregardingcopyrightownership.
#TheASFlicensesthisfiletoYouundertheApacheLicense,Version2.
0#(the"License");youmaynotusethisfileexceptincompliancewith#theLicense.
YoumayobtainacopyoftheLicenseat##http://www.
apache.
org/licenses/LICENSE-2.
0##Unlessrequiredbyapplicablelaworagreedtoinwriting,software#distributedundertheLicenseisdistributedonan"ASIS"BASIS,#WITHOUTWARRANTIESORCONDITIONSOFANYKIND,eitherexpressorimplied.
#SeetheLicenseforthespecificlanguagegoverningpermissionsand#limitationsundertheLicense.
fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_driverfromlibcloud.
compute.
drivers.
ec2importEC2NodeDriverfromlibcloud.
compute.
drivers.
rackspaceimportRackspaceNodeDriverfromtypingimportType,castec2_cls=get_driver(Provider.
EC2)rackspace_cls=get_driver(Provider.
RACKSPACE)#NOTE:IfyouareusingdrivermethodswhicharenotpartofthestandardAPI,#youneedtoexplicitlycastthedriverclassreferencetothecorrectclass#fortypecheckingtoworkcorrectlyEC2=cast(Type[EC2NodeDriver],ec2_cls)Rackspace=cast(Type[RackspaceNodeDriver],rackspace_cls)drivers=[EC2('accesskeyid','secretkey',region='us-east-1'),Rackspace('username','apikey',region='iad')]nodes=[]fordriverindrivers:nodes.
extend(driver.
list_nodes())print(nodes)#[,#,.
.
.
]#grabthenodenamed"test"node=[nforninnodesifn.
name=='test'][0]#reboot"test"node.
reboot()Ifyoureferenceaninvalidobjectattributeoramethod,youwouldseeanerrorsimilartotheonebeloewhenrunningmypy:1.
2.
DeveloperInformation45ApacheLibcloudDocumentation,Release3.
3.
1.
.
.
print(nodes[0].
name)print(nodes[0].
invalid)print(nodes[0].
rebbot())print(nodes[0].
reboot(foo='invalid')).
.
.
$mypy--no-incrementalexample_compute.
pyexample_compute.
py:41:error:"Node"hasnoattribute"invalid"example_compute.
py:42:error:"Node"hasnoattribute"rebbot";maybe"reboot"example_compute.
py:43:error:Unexpectedkeywordargument"foo"for"reboot"of"Node"IfyouareusingdrivermethodswhicharenotpartoftheLibcloudstandardAPI,youneedtousecast()methodasshownbelowtocastthedriverclasstothecorrecttype.
Ifyoudon'tdothat,mypywillonlybeawareofthemethodswhicharepartoftheLibcloudbasecomputeAPI(akaBaseNodeDriverclass).
ThisisneededbecauseofhowLibcloudutilizesmetaprogrammingfortheget_driver()andrelatedmethods(thereisnootherwaywithoutwritingamypyplugintoachievethat).
MailingListsAllofthecommunicationaboutLibclouddevelopmenthappensonourmailinglists.
announce@libcloud.
apache.
org-Moderatedandlowvolumemailinglistwhichisonlyusedfordistributingimportantprojectannouncementsandupdates.
(announce-archive)users@libcloud.
apache.
org-MailinglistforgeneraltalkaboutLibcloudandotheroff-topicthings(users-archive)dev@libcloud.
apache.
org-Generalmailinglistfordevelopers(dev-archive)notications@libcloud.
apache.
org-Commitsmessagesandotherautomaticallygeneratednoticationsgotothismailinglist.
Keepinmindthatunliketheothers,thismailinglistisfairlynoisy.
(notications-archive,commits-archive)Archiveofoldincubatormailinglists:incubator-libcloudincubator-libcloud-commitsIRC#libcloudonFreenodeIssueTrackerForbugandissuetrackingweuseGithubissueslocatedathttps://github.
com/apache/libcloud/issues.
TestingForinformationhowtorunthetestsandhowtogeneratethetestcoveragereport,pleaseseetheTestingpage.
46Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ContinuousIntegrationForcontinuousintegrationweuseTravis-CI.
Youcanndbuildreportsonthefollowinglinks:https://travis-ci.
org/apache/libcloudTravis-CIbuilderisalsointegratedwithGithubwhichmeansthatifyouopenapullrequestthere,Travis-CIwillautomaticallybuildit.
IfyouwanttovalidatethebuildbeforeraisingthePR,Travis-CIcanbeenabledforpersonalaccountsandbranchesseparately.
TestCoverageTestcoveragereportisautomaticallygeneratedaftereverypushandcanbefoundathttps://codecov.
io/github/apache/libcloudbranch=trunk.
1.
2.
2DevelopmentThispagedescribesLibclouddevelopmentprocessandcontainsgeneralguidelinesandinformationonhowtocon-tributetotheproject.
ContributingWewelcomecontributionsofanykind(ideas,code,tests,documentation,examples,.
.
.
).
Ifyouneedhelporgetstuckatanypointduringthisprocess,stopbyonourIRCchannel(#libcloudonfreenode)andwewilldoourbesttoassistyou.
GettingstartedwithcontributingtoLibcloudGeneralcontributionguidelinesAnynon-trivialchangemustcontaintests.
Formoreinformation,refertotheTestingpage.
AllthefunctionsandmethodsmustcontainSphinxdocstringswhichareusedtogeneratetheAPIdocumenta-tion.
Formoreinformation,refertotheDocstringconventionssectionbelow.
Ifyouareaddinganewfeature,makesuretoaddacorrespondingdocumentation.
CodestyleguideWefollowPEP8PythonStyleGuideUse4spacesforatabUse79charactersinalineMakesureeditedledoesn'tcontainanytrailingwhitespaceYoucanverifythatyourmodicationsdon'tbreakanyrulesbyrunningtheflake8script-e.
g.
flake8libcloud/edited_file.
pyortox-elint.
Secondcommandwillrunake8onallthelesintherepository.
Andmostimportantly,followtheexistingstyleintheleyouareeditingandbeconsistent.
1.
2.
DeveloperInformation47ApacheLibcloudDocumentation,Release3.
3.
1Gitpre-commithookTomakecomplyingwithourstyleguideeasier,weprovideagitpre-commithookwhichautomaticallychecksmodi-edPythonlesforviolationsofourstyleguide.
Youcaninstallitbyrunningfollowingcommandintherootoftherepositorycheckout:ln-scontrib/pre-commit.
sh.
git/hooks/pre-commitAfteryouhaveinstalledthishookitwillautomaticallycheckmodiedPythonlesforviolationsbeforeacommit.
Ifaviolationisfound,commitwillbeaborted.
CodeconventionsThissectiondescribessomegeneralcodeconventionsyoushouldfollowwhenwritingaLibcloudcode.
1.
ImportorderingOrganizetheimportsinthefollowingorder:1.
Standardlibraryimports2.
Third-partylibraryimports3.
Locallibrary(Libcloud)importsEachsectionshouldbeseparatedwithablankline.
Forexample:importsysimportbase64importparamikofromlibcloud.
compute.
baseimportNode,NodeDriverfromlibcloud.
compute.
providersimportProvider2.
FunctionandmethodorderingFunctionsinamoduleandmethodsonaclassshouldbeorganizedinthefollowingorder:1.
"Public"functions/methods2.
"Private"functions/methods(methodsprexedwithanunderscore)3.
"Internal"methods(methodsprexedandsufxedwithadoubleunderscore)Forexample:classUnicorn(object):def__init__(self,name='fluffy'):self.
_name=namedefmake_a_rainbow(self):passdef_get_rainbow_colors(self):(continuesonnextpage)48Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)passdef__eq__(self,other):returnself.
name==other.
nameMethodsonadriverclassshouldbeorganizedinthefollowingorder:1.
MethodswhicharepartofthestandardAPI2.
Extensionmethods3.
"Private"methods(methodsprexedwithanunderscore)4.
"Internal"methods(methodsprexedandsufxedwithadoubleunderscore)Methodswhichperformasimilarfunctionalityshouldbegroupedtogetheranddenedoneafteranother.
Forexample:classMyDriver(object):def__init__(self):passdeflist_nodes(self):passdeflist_images(self):passdefcreate_node(self):passdefreboot_node(self):passdefex_create_image(self):passdef_to_nodes(self):passdef_to_node(self):passdef_to_images(self):passdef_to_image(self):passMethodsshouldbeorderedthiswayfortheconsistencyreasonsandtomakereadingandfollowingthegeneratedAPIdocumentationeasier.
3.
PreferkeywordoverregularargumentsForbetterreadabilityandunderstandingofthecode,preferkeywordoverregulararguments.
Good:1.
2.
DeveloperInformation49ApacheLibcloudDocumentation,Release3.
3.
1some_method(public_ips=public_ips,private_ips=private_ips)Bad:some_method(public_ips,private_ips)4.
Don'tabuse**kwargsYoushouldalwaysexplicitlydeclareargumentsinafunctionoramethodsignatureandonlyuse**kwargsand*argsrespectivelywhenthereisavalidusecaseforit.
Using**kwargsinmanycontextsisagainstPython's"explicitisbetterthanimplicit"mantraandmakesitforabadandaconfusingAPI.
Ontopofthat,itmakesmanyusefulthingssuchasprogrammaticAPIintrospectionhardorimpossible.
Ausecasewhenitmightbevalidtouse**kwargsisadecorator.
Good:defmy_method(self,name,description=None,public_ips=None):passBad(pleaseavoid):defmy_method(self,name,**kwargs):description=kwargs.
get('description',None)public_ips=kwargs.
get('public_ips',None)5.
Whenreturningadictionary,documentitsstructureDynamicnatureofPythoncanbeveryniceanduseful,butif(ab)useitinawrongwayitcanalsomakeithardfortheAPIconsumertounderstandwhatisgoingonandwhatkindofvaluesarebeingreturned.
Ifyouhaveafunctionoramethodwhichreturnsadictionary,makesuretoexplicitlydocumentinthedocstringwhichkeysthereturneddictionarycontains.
6.
Prefertouse"isnotNone"whencheckingifavariableisprovidedordenedWhencheckingifavariableisprovidedordened,prefertouseiffooisnotNoneinsteadofiffoo.
Ifyouuseiffooapproach,it'seasytomakeamistakewhenavalidvaluecanalsobefalsy(e.
g.
anumber0).
Forexample:classSomeClass(object):defsome_method(self,domain=None):params={}ifdomainisnotNone:params['Domain']=domain50Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1DocstringconventionsFordocumentingtheAPIweweuseSphinxandreStructuredTextsyntax.
Docstringconventionstowhichyoushouldadheretoaredescribedbelow.
Docstringsshouldalwaysbeusedtodescribethepurposeofmethods,functions,classes,andmodules.
Methoddocstringshoulddescribeallthenormalandkeywordarguments.
Youshoulddescribealltheavailableargumentsevenifyouuse*argsand**kwargs.
Allparametersmustbedocumentedusing:paramp:or:keywordp:and:typep:annotation.
:paramp:.
.
.
-Adescriptionoftheparameterpforafunctionormethod.
:keywordp:.
.
.
-Adescriptionofthekeywordparameterp.
:typep:.
.
.
Theexpectedtypeoftheparameterp.
Returnvaluesmustbedocumentedusing:return:and:rtypeannotation.
:return:.
.
.
Adescriptionofreturnvalueforafunctionormethod.
:rtype:.
.
.
Thetypeofthereturnvalueforafunctionormethod.
Requiredkeywordargumentsmustcontain(required)notationindescription.
Forexample::keywordimage:OSImagetobootonnode.
(required)MultipletypesareseparatedwithorForexample::typeauth::class:`.
NodeAuthSSHKey`or:class:`.
NodeAuthPassword`Foradescriptionofthecontainertypesusethefollowingnotation:of.
Forexample::rtype:`list`of:class:`Node`Formoreinformationandexamples,pleaserefertothefollowinglinks:SphinxDocumentation-http://sphinx-doc.
org/markup/desc.
html#info-eld-listsExampleLibcloudmodulewithdocumentation-https://github.
com/apache/libcloud/blob/trunk/libcloud/compute/base.
pyContributionworkow1.
StartadiscussiononourGithubrepositoryoronthemailinglistIfyouareimplementingabigfeatureorachange,startadiscussionontheissuetrackerorthemailinglistrst.
2.
OpenanewissueonourissuetrackerGotoourissuetrackerandopenanewissueforyourchangesthere.
Thisissuewillbeusedasanumbrellaplaceforyourchanges.
Assuch,itwillbeusedtotrackprogressanddiscussimplementationdetails.
3.
ForkourGithubrepositoryForkourGithubgitrepository.
Yourforkwillbeusedtoholdyourchanges.
1.
2.
DeveloperInformation51ApacheLibcloudDocumentation,Release3.
3.
14.
CreateanewbranchforyourchangesForexample:gitcheckout-b5.
Makeyourchanges6.
WritetestsforyourchangesandmakesureallthetestspassMakesurethatallthecodeyouhaveaddedormodiedhasappropriatetestcoverage.
Alsomakesureallthetestsincludingtheexistingonesstillpass.
Uselibcloud.
test.
unittestastheunittestingpackagetoensurethatyourtestsworkwitholderversionsofPython.
Formoreinformationonhowtowriteandruntests,pleaseseeTestingpage.
7.
CommityourchangesCommityourchanges.
Forexample:gitcommit-m"AddanewcomputedriverforCloudStackbasedproviders.
"8.
OpenapullrequestwithyourchangesGotohttps://github.
com/apache/libcloud/andopenanewpullrequestwithyourchanges.
Yourpullrequestwillappearathttps://github.
com/apache/libcloud/pulls.
9.
WaitforthereviewWaitforyourchangestobereviewedandaddressanyoutstandingcomments.
ContributingBiggerChangesIfyouarecontributingabiggerchange(e.
g.
largenewfeatureoranewproviderdriver)youneedtohavesignedApacheIndividualContributorLicenseAgreement(ICLA)inordertohaveyourpatchaccepted.
YoucanndmoreinformationonhowtosignandleanICLAontheApachewebsite.
Whenllingtheform,leaveeldpreferredApacheid(s)emptyandinthenotifyprojecteld,enterLibcloud.
SupportingMultiplePythonVersionsLibcloudsupportsavarietyofPythonversionssoyourcodealsoneedstoworkwithallthesupportedversions.
Thismeansthatinsomecasesyouwillneedtoincludeextracodetomakesureitworksinallthesupportedversions.
Someexampleswhichshowhowtohandlethosecasesaredescribedbelow.
52Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ContextManagersContextmanagersaren'tavailableinPython2.
5bydefault.
Ifyouwanttousethemmakesuretoputfrom__future__importwith_statementontopofthelewhereyouusethem.
Utilityfunctionsforcross-versioncompatibilityYoucanndalotofutilityfunctionswhichmakecodeeasiertoworkwithPython2.
xand3.
xinlibcloud.
utils.
py3module.
Youcanndsomemoreinformationonchangeswhichareinvolvedinmakingthecodeworkwithmultipleversionsonthefollowinglink-LessonslearnedwhileportingLibcloudtoPython31.
3CommitterGuide1.
3.
1CommitterGuideNewcommitterguidelinesNote:ThissectionoutlinesstepswhichneedtobecompletedbynewteammembersandisindentedforpeoplewhohavebeenvotedtojoinLibcloudprojectasacommitterand/orPMCmember.
ItalsoassumesyouhavealreadylledyourICLAandyourApacheaccounthasbeencreated.
Firstcongratulationsandwelcometotheteam!
1.
SubscribetothepublicmailinglistsIfyouhaven'tyet,subscribeto{dev,users,notications}@libcloud.
apache.
orgmailinglists.
NoticationsmailinglistisespeciallyimportantbecauseallofGithubIssue,PullRequestandbuildnoticationsaresentthere.
2.
SubscribetotheprivatemailinglistSubscribetoprivate@libcloud.
apache.
orgbysendinganemailtoprivate-subscribe@libcloud.
apache.
org.
Keepinmindthatthislistisprivateandyoursubscriptionneedstobeapprovedbyamoderator.
3.
CreatePyPiaccountCreatingaPyPiaccountbygoingtohttps://pypi.
python.
org/pypi%3Aaction=register_formandsendanemailtoprivate@libcloud.
apache.
orgrequestingtobeaddedasamaintainertoapache-libcloudpackage.
Makesuretoselectastronganduniquepassword(pwgen-s481isyourfriend).
Afteryouhaveregisteredgoto"Yourdetails"pageandpopulatePGPKeyIDeldwithyourPGPkeyID.
1.
3.
CommitterGuide53ApacheLibcloudDocumentation,Release3.
3.
14.
LinkyourASFandGithubaccountWeuseGithubformanagingissuesandusercontributions(pullrequests).
Assuch,youneedtolinkyourGithub.
comaccountwithyourASFaccountusingGitbox.
Thiswayyouwillgetwriteaccesstogithub.
com/apache/libcloudrepositoryandyouwillbeabletomanageissuesandpullrequestdirectlythroughourGithubrepository.
MergingusercontributionsWhenapullrequestwithusercontribution(changes)hasbeenreviewedandallthecriteriaformerginghasbeenmet(testsandcodecoverage,Travisbuildispassing,usersignedanICLA,etc.
),youcandirectlymergethosechangesintotrunkeitherbyusingGithubwebinterfaceordoingitmanuallyonthecommandline.
It'salsoimportantthatyouupdatechangeloginCHANGES.
rstleafteryoumergedthechanges.
Makingarelease(forreleasemanagers)Thissectioncontainsinformationareleasemanagershouldfollowwhenpreparingarelease.
0.
UpdatecommittedlesMakesureCHANGESleisuptodateMakesure__version__stringinlibcloud/__init__.
pyisuptodateMakesureversionandreleaseindocs/conf.
pyareuptodateUpdateconstants,pricingandotherauto-generateddata:tox-escrape-ec2-sizes,scrape-ec2-prices1.
Pre-releasechecklistMakesuretestspassonallthesupportedPythonversions(tox)Removethetoxdirectorywithrm-rf.
toxRemovethe_secrets_lewithrmlibcloud/test/secrets.
pyRemoveleftoverbuildsfrompreviousreleases.
rm-fdist/apache*;rm-rfapache_libcloud.
egg-info2.
UpdateGithubCreateanewGithubmilestoneforthereleaseinquestion(ifonedoesn'texistyet)Updateaffectedissuesandpullrequestsandaddthecorrespondingreleasemilestonetothem3.
CreatingreleaseartifactsNote:It'simportantthatyouhavethelatestversionsofsetuptools,wheelandpipinstalledtoensurethegeneratedwheellescontaincorrectmetadata.
54Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Wehaveascriptthatrunstherequiredsetup.
pycommandsandthenhashesandsignstheles.
Youwillneedthelatestversionofpipandthewheelpackage.
Torunit:cddist.
/release.
sh-u@apache.
org-uargumentwillbeusedtondakeywithamatchingemailaddressinyourlocalGPGdatabase.
Thisshouldresultinasetofapache-libcloud-${VERSION}.
{tar.
bz2,tar.
gz,zip,whl}{,asc,md5,sha1}lesthataresuitabletobeuploadedforarelease.
Copytheartifactsinanotherdirectory,unpackoneofthemandtestitwithtox.
4.
TaggingareleaseTagthetentativereleasewitha-tentativepostx.
gittagForexample:gittag--signv0.
15.
0-tentative105b9610835f99704996d861d613c5a9a8b3f8b15.
Uploadthereleaseartifactsandstarta[VOTE]threadUploadallreleaseartifactsincludingthewhllestoyourpeople.
apache.
orgspace.
Thenstarta[VOTE]threadonthedev@libcloud.
apache.
orgmailinglist.
Oncethevotehaspassedtagthereleasewithanewtag,removingthe-tentativepostx.
UploadthereleaseartifactstoApacheserversandPypi.
Forexample:gittag--signv0.
15.
0105b9610835f99704996d861d613c5a9a8b3f8b1ThecommitSHAneedstobetheonereleaseartifactsarebasedon(akatheonepeoplevotedon)andthesameoneyouusedforthe-tentativetag.
Keepinmindthatit'simportantthatyousignthecommit/tagwithyourGPGkey.
6.
UploadingreleaseartifactstoApacheserversAddreleaseartifactstothedistSVNrepositoryathttps://dist.
apache.
org/repos/dist/release/libcloud/ItmaytakeuptoadayfortheartifactstobeavailableonalltheApachemirrors,buttheyshouldbeinstantlyavailableathttp://www.
apache.
org/dist/libcloud/.
Ifthereismorethanoneoldreleaseintherepository,deleterestoftheoldreleaseandonlyleavecurrentandpreviousreleasethere.
Oldreleasesareautomaticallyarchivedandavailableathttps://dist.
apache.
org/repos/dist/release/libcloud/.
1.
3.
CommitterGuide55ApacheLibcloudDocumentation,Release3.
3.
17.
PublishingpackagetoPyPiWehaveascriptthatrunsuploadsthesignedPythonsourcelestoPyPi.
Itusestwine,soensureyouhavetwineavailableinyourpathwhichtwinebeforerunning.
Twinecanbedownloadedfromhttps://pypi.
python.
org/pypi/twinecddist.
/deploy.
shOncealltheleshavebeenuploaded,thepageshouldlooksimilartothescreenshotbelow.
8.
VerifyingthereleaseartifactchecksumsToverifythatnothingwentwrongdoingthereleaseprocess,runthe.
/dist/verify_checksums.
shscript.
ThisscriptdownloadsthereleaseartifactsfromtheApacheandPyPiserverandmakessurethattheMD5checksumsofthebothlesmatch.
Usage:.
/dist/verify_checksums.
shForexample56Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1.
/dist/verify_checksums.
shapache-libcloud-0.
13.
29.
Updatingdoap_libcloud.
rdf,__init__.
pyAddinformationaboutthenewreleasetothedoap_libcloud.
rdfleintherootofthemaincoderepository.
Update__version__attributeinlibcloud/__init.
py__leandindicatewearenowworkingonanewreleasebyincrementinganumberandadding-devsufx.
Forexample,ifversion2.
2.
1hasbeenreleasedyouwouldchangeitfrom:__version__='2.
2.
1'To:__version__='2.
2.
2-dev'10.
UpdatingwebsiteCheckoutthewebsiteusingSVN:svncohttps://svn.
apache.
org/repos/asf/libcloud/site/trunkUpdatethefrontpage(source/index.
htmlle)Update"Downloads"page(source/downloads.
mdle)Addablogentryinthe_postsdirectory.
Buildthesitelocallyandmakesureeverythingiscorrect.
ChecktheREADME.
mdle.
11.
SendingannouncementsSendareleaseannouncementto{dev,users}@libcloud.
apache.
org.
Ifit'samajorreleasealsosendittoan-nounce@apache.
org.
SendareleaseannouncementtoTwitterandGoogle+Note:Ifthereleasexesasecurityvulnerability,youshouldalsosendinformationaboutavulnerabilitytothefollow-ingfulldisclosuremailinglists:full-disclosure@lists.
grok.
org.
ukbugtraq@securityfocus.
comTheemailyousendshouldalsobesignedusingyourGPGkey.
Youcanndanexampleofsuchannouncementonthefollowingurl.
Ifneeded,useApacheURLshorteningservice-http://s.
apache.
org/MailinglistemailtemplatesThissectionincludesemailtemplateswhichcanbeusedwhensendingoutofcialcommunicationtothemailinglists.
1.
3.
CommitterGuide57ApacheLibcloudDocumentation,Release3.
3.
1ReleasevotingthreadtemplateThistemplateshouldbeusedwhenstartingavotingthreadforanewrelease.
Subject:[VOTE]ReleaseApacheLibcloudBody:ThisisavotingthreadforLibcloud.
Fullchangelogcanbefoundat.
Releaseartifactscanbefoundat.
KEYSfilecanfoundathttps://dist.
apache.
org/repos/dist/release/libcloud/KEYSPleasetestthereleaseandpostyourvotes.
+/-1[]ReleaseApacheLibcloudVotewillbeopeneduntil(orlonger,→ifneeded).
Thanks,Forexample:Subject:[VOTE]ReleaseApacheLibcloud0.
13.
2Body:ThisisavotingthreadforLibcloud0.
13.
2.
Thisisanotherprimarilyabug-fixrelease.
Previousreleaseincludedafixforthe→Content-Lengthbugwhichdidn'tfullyfixtheoriginalissue.
Itmissedout"raw"→requestswhicharefixedinthisrelease(LIBCLOUD-396).
Thisbugcouldmanifestitselfwhileuploadingafilewithsomeofthestorage→providers.
Besidesthisbugfix,itincludesacoupleofothersmallerbugfixesandchanges.
→Fullchangelogcanbefoundathttps://git-wip-us.
apache.
org/repos/asfp=libcloud.
git;a=blob;→f=CHANGES;h=b7747f777afdeb63bcacf496d1d034f1b3287c31;→hb=c4b3daae946049652a500a8515929b4cbf14a6b4Releaseartifactscanbefoundathttp://people.
apache.
org/~tomaz/libcloud/.
Pleasetestthereleaseandpostyourvotes.
(continuesonnextpage)58Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)+/-1[]ReleaseApacheLibcloud0.
13.
2VotewillbeopeneduntilSeptember18th,2013(orlonger,ifneeded).
Thanks,TomazReleaseannouncementThistemplateshouldbeusedwhensendingoutareleaseannouncement.
Subject:[ANNOUNCE]ApacheLibcloud0.
13.
1releaseBody:LibcloudisaPythonlibrarythatabstractsawaythedifferencesamongmultiplecloudproviderAPIs.
Itallowsuserstomanagecloudservices(servers,storage,loadbalancers,DNS)offeredbymanydifferentprovidersthroughasingle,unifiedandeasytouseAPI.
WearepleasedtoannouncethereleaseofLibcloud!
FullchangelogcanbefoundatDownloadLibcloudcanbedownloadedfromhttp://libcloud.
apache.
org/downloads.
htmlorinstalledusingpip:pipinstallapache-libcloudUpgradingIfyouhaveinstalledLibcloudusingpipyoucanalsouseittoupgradeit:pipinstall--upgradeapache-libcloudUpgradenotesApagewhichdescribesbackwardincompatibleorsemi-incompatiblechangesandhowtopreservetheoldbehaviorwhenthisispossiblecanbefoundathttp://libcloud.
apache.
org/upgrade-notes.
html.
DocumentationAPIdocumentationcanbefoundathttp://libcloud.
apache.
org/apidocs//.
WealsohaveanewSphinxdocumentationwhichcanbefoundathttps://libcloud.
apache.
→org/docs/.
(continuesonnextpage)1.
3.
CommitterGuide59ApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)Bugs/IssuesIfyoufindanybugorissue,pleasereportitonourissuetracker.
Don'tforgettoattachanexampleand/ortestwhichreproducesyourproblem.
ThanksThankstoeveryonewhocontributedandmadethisreleasepossible!
FulllistofpeoplewhocontributedtothisreleasecanbefoundintheCHANGESfile.
Forexample:Subject:[ANNOUNCE]ApacheLibcloud0.
13.
1releaseBody:LibcloudisaPythonlibrarythatabstractsawaythedifferencesamongmultiplecloudproviderAPIs.
Itallowsuserstomanagecloudservices(servers,storage,loadbalancers,DNS)offeredbymanydifferentprovidersthroughasingle,unifiedandeasytouseAPI.
WearepleasedtoannouncethereleaseofLibcloud0.
13.
1!
Thisisabug-fixonlyrelease.
AmongsomesmallerbugsitalsofixesContent-LengthregressionwhichbrokecreateandupdateoperationsintheBlueboxComputeandAzureStoragedriver(LIBCLOUD-362,LIBCLOUD-3901).
FullchangelogcanbefoundatDownloadLibcloud0.
13.
1canbedownloadedfromhttp://libcloud.
apache.
org/downloads.
htmlorinstalledusingpip:pipinstallapache-libcloudUpgradingIfyouhaveinstalledLibcloudusingpipyoucanalsouseittoupgradeit:pipinstall--upgradeapache-libcloudUpgradenotesApagewhichdescribesbackwardincompatibleorsemi-incompatiblechangesandhowtopreservetheoldbehaviorwhenthisispossiblecanbefoundathttp://libcloud.
apache.
org/upgrade-notes.
html.
Documentation(continuesonnextpage)60Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)APIdocumentationcanbefoundathttp://libcloud.
apache.
org/apidocs/0.
13.
1/.
WealsohaveanewSphinxdocumentationwhichcanbefoundathttps://libcloud.
apache.
→org/docs/.
Keepinmindthough,thatthisdocumentationreflectsstateintrunkwhichincludessomebackwardincompatiblechangeswhicharen'tpresentin0.
13.
1.
Alltheexamplesinthedocumentationwhichonlyworkwithtrunkareclearlymarked→withanote.
Bugs/IssuesIfyoufindanybugorissue,pleasereportitonourissuetracker.
Don'tforgettoattachanexampleand/ortestwhichreproducesyourproblem.
ThanksThankstoeveryonewhocontributedandmadethisreleasepossible!
FulllistofpeoplewhocontributedtothisreleasecanbefoundintheCHANGESfile.
1.
4Other1.
4.
1ChangelogChangesinApacheLibcloud3.
3.
1Compute[EC2]Fixaregressionintroducedinv3.
3.
0whichwouldbreakEC2driverforsomeregionsbecausethedriverwouldincorrectlytrytousesignatureversion2foralltheregionswhereassomenewerregionsrequiresignatureversion4tobeused.
Ifyouareunabletoupgrade,youcanusethefollowingworkaround,aslongasyouonlyusecodewhichsupports/workswithauthenticationsignaturealgorithmversion4:importlibcloud.
common.
awslibcloud.
common.
aws.
DEFAULT_SIGNATURE_VERSION="4"#Instantiateaffecteddriverhere.
.
.
Reportedby@olegrtecno.
(GITHUB-1545,GITHUB-1546)[EC2]Allowusertooverridewhichsignaturealgorithmversionisusedforauthenticationbypassingsignature_versionkeywordargumenttotheEC2driverconstructor.
(GITHUB-1546)Storage[GoogleCloudStorage]Fixabugandmakesurewealsocorrectlyhandlescenarioinget_object()methodwhentheobjectsizeisreturnedinx-goog-stored-content-lengthandnotcontent-length1.
4.
Other61ApacheLibcloudDocumentation,Release3.
3.
1header.
ReportedbyVeithRthlingshfer-@RunOrVeith.
(GITHUB-1544,GITHUB-1547)[GoogleCloudStorage]Updateget_object()methodandensureobject.
sizeattributeisanintegerandnotastring.
Thiswayit'sconsistentwithlist_objects()method.
(GITHUB-1547)ChangesinApacheLibcloud3.
3.
0CommonFixabugwhichwouldcausesomepreparedrequestswithemptybodiestobechunkedwhichwouldcausesomeoftheproviderAPIssuchasOpenStacktoreturnHTTP400errors.
(GITHUB-1487,GITHUB-1488)[MichaelSpagon-@mspagon]Optimizevariouscodeimports(removeunnecessaryimports,makesomelazy,etc.
),sonowimportingmostofthemodulesisaround~20-40%faster(~70vs~140ms)andinsomecasessuchasEC2driverevenmore.
Nowmajorityoftheimporttimeisspentinimportingrequestslibrary.
(GITHUB-1519)[TomazMuraus]libcloud.
pricing.
get_size_price()functionhasbeenupdatedsoitonlycachespricingdatainmemoryfortherequesteddrivers.
Thiswayweavoidcachingdatainmemoryfordriverswhichmayneverbeused.
Ifyouwanttoreverttooldbehavior(cachepricingdataforallthedriversinmemory),youcandothatbypassingcache_all=Trueargumenttothatfunctionorsetlibcloud.
pricing.
CACHE_ALL_PRICING_DATAmodulelevelvariabletoTrue.
Passingcache_all=Truemightcomehandyinsituationswhereyouknowtheapplicationwillworkwithalotofdifferentdrivers-thiswayyoucanavoidmultiplediskreadswhenrequestingpricingdatafordifferentdrivers.
(GITHUB-1519)[TomazMuraus]AdvertisePython3.
9supportinsetup.
py.
Compute[GCE]Fixex_set_image_labelsmethodusingincorrectAPIpath.
(GITHUB-1485)[PoulPetersen-@petersen-poul][OpenStack]Fixerrorsettingex_force_XXX_urlwithoutsettingex_force_base_url.
(GITHUB-1492)[MiguelCaballer-@micafer][EC2]UpdatesupportedEC2regionsandinstancesizesandaddsupportforeu-north-1region.
(GITHUB-1486)[ArturoNoha-@r2ronoha][Ovh]Addsupportformultipleregionstothedriver.
Usercanselectaregion(location)bypassinglocationargumenttothedriverconstructor(e.
g.
location=ca).
(GITHUB-1494)[DanHunsaker-@danhunsaker][GCE]Addsupportforcreatingnodeswithoutaserviceaccountassociatedwiththem.
Nowwhenanemptylistispassedforex_service_accountsargument,VMwillbecreatedwithoutserviceaccountattached.
Forbackwardcompatibilityreasons,defaultvalueofNonestillmeanstouseadefaultserviceaccount.
(GITHUB-1497,GITHUB-1495)[DavidTomaschik-Matir][VSphere]AddnewVMwareVSpheredriverwhichutilizespyvmomilibraryandworksunderPython3.
Ifyouwanttousethisdriver,youneedtoinstallpyvmomidependency-pipinstallpyvmomi(GITHUB-1481)[EisD.
Zaster-@Eis-D-Z]62Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1[OpenStack]EnabletogetQuotaSetdetail.
(GITHUB-1495)[MiguelCaballer-@micafer][OpenStack]Addex_get_size_extra_specsfunctiontoOpenStackdriver.
(GITHUB-1517)[MiguelCaballer-@micafer][OpenStack]EnabletogetNeutronQuotadetailsinOpenStackdriver.
(GITHUB-1514)[MiguelCaballer-@micafer][DigitalOcean]_node_nodemethodnowensuresimageandsizeattributesarealsosetcorrectlyandpop-ulatedontheNodeobject.
(GITHUB-1507,GITHUB-1508)[@sergerdn][Vultr]Makesureprivate_ipsattributeontheNodeobjectiscorrectlypopulatedwhenlistingnodes.
Alsoaddadditionalvaluestothenode.
extradictionary.
(GITHUB-1506)[@sergerdn][EC2]OptimizeEC2driverimportsandmoveallthelargeconstantlestoseparatemodulesinlibcloud/compute/constants/ec2_*.
pyles.
Previouslyalltheconstantswerecontainedinlibcloud/compute/constants.
pyle.
ThatlewasimportedwhenimportingEC2driverwhichwouldaddunnecessaryimporttimeandmemoryoverheadincasethisdatawasnotactuallyused.
Nowmostofthelargeimportsarelazyandonlyhappenwhenthatdataisneeded(akawhenlist_sizes()methodiscalled).
libcloud/compute/constants.
pylehasalsobeenremoved.
(GITHUB-1519)[TomazMuraus-@Kami][Packet/EquinixMetal]PacketdriverhasbeenrenamedtoEquinixMetal.
IfyourcodeusesPacket.
netdriver,youneedtoupdateitasperexampleinUpgradeNotesdocumentationsection.
(GITHUB-1511)[DimitrisGalanis-@dimgal1][OutScale]Addvariousextensionmethodstothedriver.
Forinformationonavailableextenionmethods,pleaserefertothedriverdocumentation.
(GITHUB-1499)[@tgn-outscale][Linode]AddsupportforLinode'sAPIv4.
(GITHUB-1504)[DimitrisGalanis-@dimgal1]StorageDeprecatedlockfilelibrarywhichisusedbytheLocalStoragedriverhasbeenreplacedwithfastenerslibrary.
[TomazMuraus-@Kami][S3]Addsupportforus-gov-east-1region.
(GITHUB-1509,GITHUB-1510)[AndySpohn-@spohnan][DigitalOceanSpaces]Addsupportforsfo2regon.
(GITHUB-1525)[CristianRasch-@cristianrasch][MinIO]AddnewdriverforMinIOobjectstorage(https://min.
io).
(GITHUB-1528,GITHUB-1454)[TomazMuraus-@Kami][S3]UpdateS3andotherdriverswhicharebasedontheS3one(GoogleStorage,RGW,MinIO)tocorrectlythrowContainerAlreadyExistsErrorifcontainercreationfailsbecausecontainerwiththisnameal-readyexists.
Previouslyinsuchscenario,InvalidContainerNameErrorexceptionwhichdoesnotcomplywiththeLibcloudstandardAPIwasthrown.
(GITHUB-1528)[TomazMuraus-@Kami]Addnewlibcloud.
common.
base.
ALLOW_PATH_DOUBLE_SLASHESmodulelevelvariable.
WhenthisvalueissettoTrue(defaultstoFalseforbackwardcompatibilityreasons),Libcloudwon'ttrytosanitizetheURLpathandremoveanydoubleslashes.
1.
4.
Other63ApacheLibcloudDocumentation,Release3.
3.
1Inmostcases,thiswon'tmatterandsanitzingdoubleslashesisasaferdefault,butinsomecasessuchasS3,wheredoubleslashescanbeavalidpath(e.
g.
/my-bucket//path1/file.
txt),thisoptionmaycomehandy.
WhenthisvariableissettoTrue,behaviorisalsoconsistentwithLibcloudversionspriortov2.
0.
0.
ReportedbyJonathanHanson-@triplepoint.
(GITHUB-1529)[TomazMuraus-@Kami]DNS[Common]Fixabugwiththeheadervaluereturnedbytheexport_zone_to_bind_formatmethodcon-taininganinvalidtimestamp(valuefortheminutepartofthetimestampwaswrongandcontainedmonthnumberinsteadoftheminutesvalue).
ReportedbyKurtSchwehr-@schwehr.
(GITHUB-1500)[TomazMuraus-@Kami][CloudFlareDNS]AddsupportforcreatingSSHFPrecords.
(GITHUB-1512,GITHUB-1513)[WillHughes-@insertjokehere][DigitalOcean]UpdatedriverandmakesurerequestdataissentaspartofHTTPrequestbodyonPOSTandPUToperations(previouslyitwassentaspartofqueryparams).
(GITHUB-1505)[AndrewStarr-Bochicchio-@andrewsomething][AuroraDNS]Throwcorrectexceptionon403authorizationfailedAPIerror.
(GITHUB-1521,GITHUB-1522)[FreekDijkstra-@macfreek][Linode]AddsupportforLinode'sAPIv4.
(GITHUB-1504)[DimitrisGalanis-@dimgal1][CloudFlare]UpdatedriversoitcorrectlythrowsRecordAlreadyExistserroronvariouserrorresponseswhichrepresentthiserror.
[TomazMuraus-@Kami]ChangesinApacheLibcloud3.
2.
0Commonlibcloud.
pricing.
download_pricing_filefunctionhasbeenupdatedsoittriestodownloadlatestpricing.
jsonlefromourpublicread-onlyS3bucket.
WenowrunadailyjobaspartofourCI/CDwhichscrapesproviderpricesandpublishesthelatestversionofthepricing.
jsonletothatbucket.
Formoreinformation,pleaseseehttps://libcloud.
readthedocs.
io/en/latest/compute/pricing.
html.
Compute[OpenStack]Addex_get_network()totheOpenStackdrivertomakeitpossibletoretrieveasinglenetworkbyusingtheID.
(GITHUB-1474)[SanderRoosingh-@SanderRoosingh][OpenStack]Fixpaginationinthelist_images()methodandmakesuremethodreturnsalltheimages,eveniftheresultisspreadacrossmultiplepages.
(GITHUB-1467)[ThomasBechtold-@toabctl]64Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1[GCE]AddscriptforscrapingGCEpricingdataandimprovepriceadditionin_to_node_sizemethod.
(GITHUB-1468)[EisD.
Zaster-@Eis-D-Z][AWSEC2]UpdatescriptforscrapingAWSEC2pricingandupdateEC2pricingdata.
(GITHUB-1469)[EisD.
Zaster-@Eis-D-Z][Deployment]Addnewwait_periodargumenttothedeploy_nodemethodanddefaultitto5seconds.
ThisargumenttellsLibcloudhowlongtowaitbetweeneachpollintervalwhenwaitingforanodetocomeonlineandhaveIPaddressassignedtoit.
Previouslythisargumentwasnotexposedtotheenduseranddefaultedto3secondswhichmeansitwouldbequiteeasytoreachratelimitswithsomeproviderswhenspinningupmanyinstancesconcurrentlyusingthesamecredentials.
[TomazMuraus-@Kami][AzureARM]AddscriptforscrapingAzureARMinstancepricingdata.
(GITHUB-1470)[EisD.
Zaster-@Eis-D-Z]Updatedeploy_node()methodtotrytore-connecttotheserverifwereceive"SSHconnectionnotactive"errorwhentryingtorunadeploymentstep.
Insomescenarios,connectionmaygetclosedbytheserverforwhateverreasonbeforenishingallthedeploy-mentstepsandinthiscaseonlyre-connectingwouldhelpandresultinasuccessfuloutcome.
[TomazMuraus-@Kami][Deployment]MakeFileDeploymentclassmuchfasterandmoreefcientwhenworkingwithlargelesorwhenrunningmultipleFileDeploymentstepsonasinglenode.
ThiswasachievedbyimplementingtwochangesontheParamikoSSHClientclass:1.
put()methodnowtriestore-usetheexistingopenSFTPconnectionifonealreadyexistsinsteadofre-creatinganewoneforeachput()call.
2.
Newputfo()methodhasbeenaddedtotheParamikoSSHClientclasswhichutilizestheunderlyingsftp.
putfo()method.
Thismethoddoesn'tneedtobufferthewholelecontentinmemoryandalsosupportspipeliningwhichmakesuploadsmuchfasterandmoreefcientforlargerles.
[TomazMuraus-@Kami][Deployment]Add__repr__()and__str__()methodstoalltheDeploymentclasses.
[TomazMuraus-@Kami][Deployment]Newkeep_aliveanduse_compressionargumentshavebeenaddedtotheParamikoSSHClientclassconstructor.
Rightnowthosearenotexposedyettothedeploy_node()method.
[TomazMuraus-@Kami][Deployment]UpdateParamikoSSHClient.
put()methodsoitreturnsacorrectpathwhencommandsarebeingexecutedonaWindowsmachine.
AlsoupdaterelateddeploymentclassessotheycorrectlyhandlesituationwhenweareexecutingcommandsonaWindowsserver.
[ArthurKamalov,TomazMuraus][Outscale]AddanewdriverfortheOutscaleprovider.
ExistingOutscaledriverutilizestheEC2compatibleAPIandthisoneutilizesnativeOutscaleAPI.
(GITHUB-1476)[TioGobin-@tgn-outscale][KubeVirt]AddnewmethodsformanagingserviceswhichallowsuserstoexposeportsfortheVMs(ex_list_services,ex_create_service,ex_delete_service).
(GITHUB-1478)[EisD.
Za-ster-@Eis-D-Z]1.
4.
Other65ApacheLibcloudDocumentation,Release3.
3.
1Container[LXD]Addnewmethodsformanagingnetworkandstoragepoolcapabilitiesandincludeotherimprovementsinsomeoftheexistingmethods.
(GITHUB-1477)[EisD.
Zaster-@Eis-D-Z]ChangesinApacheLibcloud3.
1.
0Compute[GCE]AddlatestUbuntuimagefamilies(Ubuntu20.
04)tothedriver.
(GITHUB-1449)[ChristopherLambert-@XN137][DigitalOcean]Addlocationargumenttothelist_sizes()method.
NOTE:Locationlteringisperformedontheclient.
(GITHUB-1455,GITHUB-1456)[RobertH1993]Fixdeploy_node()soanexceptionisnotthrownifanyoftheoutput(stdout/stderr)producedbythedeploymentscriptcontainsanon-validutf-8character.
Previously,userwouldseeanerrorsimilarto"Failedafter3tries:'utf-8'codeccan'tdecodebyte0xc0inposition37:invalidstartbyte".
Andnowwesimplyignorebytesequenceswhichwecan'tdecodeandincluderestoftheoutputwhichcanbedecoded.
(GITHUB-1459)[TomazMuraus-@Kami]AddnewtimeoutargumenttoScriptDeploymentandScriptFileDeploymentclassconstructor.
Withthisargument,usercanspecifyanoptionalruntimeoutforthatdeploymentsteprun.
(GITHUB-1445)[TomazMuraus-@Kami][GiGG8]FixretryfunctionalitywhencreatingportforwardsandaddsupportforautomaticallyrefresingtheJWTauthtokeninsidetheconnectionclassifit'sabouttoexpirein60secondsorless.
(GITHUB-1465)[JoDeBoeck-@grimpy][AzureARM]Updatecreate_nodesoanexceptionisthrownifuserpassesex_use_managed_disks=False,butdoesn'tprovideavaluefortheex_storage_accountargument.
(GITHUB-1448)[@antoinebourayne]Storage[AWSS3]Makesuredriverworkscorrectlyforobjectswith~inthename.
Nowwhensanitizingtheobjectname,wedon'turlencode~character.
ReportedbyMichaelMilitzer-@mmilitzer.
(GITHUB-1452,GITHUB-1457)[TomazMuraus]DNS[CloudFlare]Updatedrivertoincludethewholeerrorchainthethrownexceptionmessageeld.
Thismakesvariousissueseasiertodebugsincethewholeerrorcontextisincluded.
[TomazMuraus][GandiLive,CloudFlare,GCE]AddsupportformanagingCAArecordtypes.
WhencreatingaCAArecord,dataeldneedstobeinthefollowingformat:66Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Forexample:–0issuecaa.
example.
com–0issuewildcaa.
example.
com–0iodefhttps://example.
com/reports(GITHUB-1463,GITHUB-1464)[TomazMuraus][GandiLive]Don'tthrowifextra['rrset_ttl']argumentisnotpassedtothecreate_recordmethod.
(GITHUB-1463)[TomazMuraus]OtherUpdatecontrib/DockerfilewhichcanbeusedforrunningtestssoitonlyruntestswithPythonversionswesupport.
ThismeansdroppingsupportforPython=2.
2.
0.
(GITHUB-1445)[TomazMuraus-@Kami]Fixdeploy_node()soitcorrectlypropagatesanexceptionisaprivatekeywhichisusedispasswordpro-tected,butnopasswordisspecied.
Previouslyitincorrectlytriedtoretryonsuchexception.
Thismeanstheexceptionwouldonlybubbleupafteralltheretryattemptshavebeenexhausted.
(GITHUB-1445)[TomazMuraus-@Kami]Allowusertospecifypasswordforencryptedkeysbypassingssh_key_passwordargumenttothedeploy_node()method.
Previouslythey(GITHUB-1445)[TomazMuraus-@Kami]Fixdeploy_node()soitcorrectlypropagatesanexceptionifinvalidorunsupportedprivatekeyisused.
Previouslyitincorrectlytriedtoretryonsuchexception.
Thismeanstheexceptionwouldonlybubbleupafteralltheretryattemptshavebeenexhausted.
(GITHUB-1445)[TomazMuraus-@Kami]Fixdeploy_node()methodsowedon'tretryonfatalSSHCommandTimeoutErrorexception(exceptionwhichisthrownwhenacommandwhichisrunningonremotehosttimesout).
(GITHUB-1445)[TomazMuraus-@Kami]AddnewtimeoutargumenttoScriptDeploymentandScriptFileDeploymentclassconstructor.
Withthisargument,usercanspecifyanoptionalruntimeoutforthatdeploymentsteprun.
(GITHUB-1445)[TomazMuraus-@Kami]AddnewstdoutandstderrattributetoSSHCommandTimeoutErrorclass.
Thoseattributescontainvalueofstdoutandstderrproducedsofar.
(GITHUB-1445)[TomazMuraus-@Kami][OpenStack]Fixautoassignmentofvolumedevicewhenusingdevicenameautointheattach_volumemethod.
(GITHUB-1444)[JoshuaHesketh-@jhesketh]ChangesinApacheLibcloudv2.
8.
1CommonFixLIBCLOUD_DEBUG_PRETTY_PRINT_RESPONSEfunctionalityandmakesureitworkscorrectlyunderPython3whenresponse.
read()functionreturnsunicodeandnotbytes.
(GITHUB-1430)[TomazMuraus]1.
4.
Other69ApacheLibcloudDocumentation,Release3.
3.
1Compute[GCE]Fixlist_nodes()methodsoitcorrectlyhandlespaginationandreturnsallthenodesiftherearemorethan500nodesavailableintotal.
Previously,onlyrst500nodeswerereturned.
Reportedby@TheSushiChef.
(GITHUB-1409,GITHUB-1360)[TomazMuraus]FixsomeincorrecttypeannotationsinthebasecomputeAPI.
Reportedby@dpeschman.
(GITHUB-1413)[TomazMuraus][OpenStack]Fixerrorwithgettingnodeidin_to_floating_ipmethodwhenregionisnotcallednova.
(GITHUB-1411,GITHUB-1412)[MiguelCaballer-@micafer][EC2]Fixex_userdatakeywordargumentinthecreate_node()methodbeingignored/notworkingcorrectly.
NOTE:Thisregressionhasbeeninadvertentlyintroducedinv2.
8.
0.
(GITHUB-1426)[DanChaffelson-@Chaf-felson][EC2]Updatecreate_volumemethodtoautomaticallyselectrstavailableavailabilityzoneifoneisnotexplicitlyprovidedvialocationargument.
[TomazMuraus]Storage[AWSS3]FixuploadobjectcodesouploadeddataMD5checksumcheckisnotperformedattheendoftheuploadwhenAWSKMSserversideencryptionisused.
IfAWSKMSserversideobjectencryptionisused,ETagheadervalueintheresponsedoesn'tcontaindataMD5digestsowecan'tperformachecksumcheck.
ReportedbyJonathanHarden-@jfharden.
(GITHUB-1401,GITHUB-1406)[TomazMuraus-@Kami][GoogleStorage]Fixabugwhenuploadinganobjectwouldfailandresultin401"invalidsignature"errorwhenobjectmimetypecontainedmixedcasingandwhenS3Interoperabilityauthenticationmethodwasused.
ReportedbyWillAbson-wabson.
(GITHUB-1417,GITHUB-1418)[TomazMuraus]Fixupload_object_via_streammethodso"Illegalseek"errorswhichcanarisewhencalculatingitera-torcontenthashareignored.
Thoseerrorslikelyindicatethattheunderlyinglehandle/iteratorisapipewhichdoesn'tsupportseekandthattheerrorisnotfatalandweshouldstillproceed.
ReportedbyPerBuer-@perbu.
(GITHUB-1424,GITHUB-1427)[TomazMuraus]DNS[GandiLive]Updatethedriverandmakesureitmatchesthelatestservice/APIupdates.
(GITHUB-1416)[RyanLee-@zepheiryan][CloudFlare]Fixexport_zone_to_bind_formatmethod.
Previouslyitthrewanexception,becauserecord.
extradictionarydidn'tcontainprioritykey.
ReportedbyJamesMontgomery-@gh-jamesmontgomery.
(GITHUB-1428,GITHUB-1429)[TomazMuraus]70Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ChangesinApacheLibcloudv2.
8.
0CommonFixaregressionwithget_driver()methodnotworkingifproviderargumentvaluewasastring(e.
g.
usingget_driver('openstack')insteadofget_driver(Provider.
OPENSTACK)).
OnlyofciallysupportedandrecommendedapproachstillistouseProvider.
FOOenumtypeconstant,butsincethestringnotationwasunofciallysupportedinthepast,wewillstillsupportituntilthenextmajorrelease.
Reportedby@dpeschman.
(GITHUB-1391,GITHUB-1390)[TomazMuraus]Includepy.
typeddataletosignalthatthispackagecontainstypeannotations/hints.
NOTE:Atthemoment,typeannotationsareonlyavailableforthebasecomputeAPI.
[TomazMuraus]FixuniversalwheelMETADATAandensureconditionaldependencies(backports.
ssl_match_hostname,typing,enum34)arehandledcorrectly.
ReportedbyAdamTerrey(@arterrey).
(GITHUB-1392,GITHUB-1393)[TomazMuraus]Compute[DigitalOcean]Fixattach_volumeanddetach_volumemethods.
Previouslythosetwomethodsincor-rectlypassedvolumeidinsteadofvolumenametotheAPI.
(GITHUB-1380)[@mpempekos][GCE]Addex_disk_sizeargumenttothecreate_nodemethod.
(GITHUB-1386,GITHUB-1388)[Pe-terYu-@yukw777][VMwarevCloud]Variousimprovements,xesandadditionstothedriver.
(GITHUB-1373)[OpenTextCorpo-ration]Updatedeploy_node()methodsoitnowonlypassesnon-deploynodekeywordarguments+authar-gumenttotheunderlyingcreate_node()method.
Previouslyitalsopasseddeploy_node()specicargumentssuchasdeploy,ssh_username,max_tries,etc.
toit.
Becauseofthat,alotofthecomputedriverswhichsupportdeployfunctionalityneededtouse**kwargsincreate_node()methodsignaturewhichmadecodehardtoreadanderrorprone.
Alsoupdatevariousaffecteddriverstoexplicitlydeclaresupportedargumentsinthecreate_node()methodsignature(Dummy,Abiquo,Joyent,Bluebox,OpenStack,Gandy,VCL,vCloud,CloudStack,GoGridHostVir-tual,CloudSigma,ElasticStack,RimuHosting,SoftLayer,Voxel,Vpsnet,KTUcloud,BrightBox,ECP,Open-Nebula,UPcloud).
Aspartofthischange,alsovariousissueswithinvalidargumentnameswereidentiedandxed.
(GITHUB-1389)[TomazMuraus]AddMyPytypeannotationsforcreate_node()anddeploy_node()method.
(GITHUB-1389)[TomazMuraus][GCE]Updatedeploy_node()methodsoitcomplieswiththebasecomputeAPIandacceptsdeployargument.
Thismethodnowalsotakesallthesamekeywordargumentswhichoriginalcreate_node()takes.
(GITHUB-1387)[PeterYu-@yukw777,TomazMuraus][Common]Tomakedebuggingandtroubleshootingeasier,add__repr__and__str__methodtotheScriptDeploymentclass.
[TomazMuraus][Common]Addtypeannotations/hintsforrestofthebasecomputeAPIclassesandmethods.
[TomazMuraus]1.
4.
Other71ApacheLibcloudDocumentation,Release3.
3.
1Storage[AWSS3]Makesurehostdriverconstructorargumenthaspriorityoverregionargument.
Thismeansifyouspecifyhostandregionargument,hostwon'tbeinferredfromtheregion,buthostargumentwillbeusedfortheactualconnectionhostvalue.
(GITHUB-1384,GITHUB-1383)[@gluap]ChangesinApacheLibcloudv2.
7.
0GeneralTestcodewithPython3.
8andadvertisethatwealsosupportPython3.
8.
(GITHUB-1371,GITHUB-1374)[TomazMuraus]Common[OpenStack]FixOpenStackprojectscopedtokenauthentication.
Thedriverconstructorsnowacceptex_tenant_domain_idargumentwhichtellsauthenticationservicewhichdomainidtouseforthescopedauthenticationtoken.
(GITHUB-1367)[kshtsk]ComputeIntroducetypeannotationsforthebasecomputeAPImethods.
Thismeansyoucannowleveragemypytotypecheck(withsomelimitations)yourcodewhichutilizesLibcloudcomputeAPIstandardAPImethods.
Keepinmindthatatthispoint,typeannotationsareonlyavailableforstandardcomputeAPImethods.
(GITHUB-1306)[TomazMuraus][AzureARM]Fixattach_volumemethodandallowmaximumof64diskstobeaddedwhenLUNisnotspecied.
Previouslytherewasabugandonlyamaximumof63diskscouldbeadded.
(GITHUB-1372)[PalashGandhi-@palashgandhi]Newstart_nodeandstop_nodemethodshavebeenaddedtothebaseLibcloudcomputeAPINodeDriverclass.
Alotoftheexistingcomputedriversalreadyimplementedthatfunctionalityviaextensionmethods(ex_start_node,ex_stop_node)soitwasdecidedtopromotethosemethodstobepartofthestandardLibcloudcomputeAPIandupdatealltheaffecteddrivers.
Forbackwardcompatibilityreasons,existingex_startandex_stop_nodemethodswillstillworkuntilanextmajorrelease.
(GITHUB-1375,GITHUB-1364)[TomazMuraus,@emakarov][GCE]Addnewex_set_volume_labelsmethodformanagingvolumelabelstothedriver.
(GITHUB-1376)[RobZimmerman-@zimventures][EC2]Addsupportfornewinf1.
*instancetypes.
[TomazMuraus]Storage[S3]UpdateS3driversoasingledriverclasscanbeusedfordifferentregions.
Regionwhichisusediscontroledbytheregiondriverconstructorargument.
72Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Previously,thatdriverfollowed"driverclassperregion"approach.
Thatapproachwillbedeprecatedandremovedinafuturerelease.
Formoreinformation,pleaserefertotheUpgradeNotesdocumentationsection.
(GITHUB-1371)[TomazMuras][S3]Addmissingeu-north-1regiontotheS3driver.
(GITHUB-1370)[michaelsembwever][S3]Addmissingregions(eu-west-3,ap-northeast-3,me-south-1)tothedriver.
(GITHUB-1371)[TomazMuras][S3]Updatethedrivertothrowmoreuser-friendlyerrormessageifuserisusingdriverforaregionX,buttryingtoupload/downloadobjectto/fromaregionY.
(GITHUB-1371)[TomazMuras]ChangesinApacheLibcloud2.
6.
1Compute[Packet]Updatelist_sizesmethodsoitacceptsex_project_idargumentandworkswithprojectAPItokens.
(GITHUB-1351)[DimitrisMoraitis-@d-mo][GCE]FixGCEProject.
set_common_instance_metadataandGCEproject.
set_usage_export_bucketmethod.
(GITHUB-1354)[AitorZabala-@aitorzabala,TomazMuraus-@Kami][GCE]Addsync/ex_syncargumenttotheex_stop_node,ex_start_nodeanddestroy_nodemethod.
WhenthisargumentissettoFalse,methodwillreturnimmediatelywithoutwaitingpollingandwaitingforalongrunningAPIoperationtonishbeforereturning.
Forbackwardcompatibilityreasons,itdefaultstoTrue.
(GITHUB-1357)[RobZimmerman-zimventures][GCE]Updatelistofimageprojectsandaddnewcentos-8anddebian-10basedimages.
(GITHUB-1358)[ChristopherLambert-XN137][OpenStackv2]Addnewex_image_refargumenttothecreate_volumemethod.
Thiswaybootablevolumescanbecreatedfromspecicimages.
(GITHUB-1363)[RickvandeLoo][OpenStackv2]Updatecreate_node_methodandallowuserstocreatenodesfrombootablevolumeswithoutspecifyingimageargument.
(GITHUB-1362)[RickvandeLoo][AWS]Re-generateandupdateavailableEC2instancesizesandpricingdata.
[TomazMuraus]Storage[Common,S3,GCS]ReuseTCPconnectionswhenuploadingles(GITHUB-1353)[QuentinPradet]LoadBalancer[AWS]Implementvariouscreatemethodsinthedriver.
(GITHUB-1349)[AntonKozyrev-@Irvan]ChangesinApacheLibcloud2.
6.
01.
4.
Other73ApacheLibcloudDocumentation,Release3.
3.
1General[OpenStack]UpdateOpenStackidentitydriversoacustomprojectcanbeselectedusingdomain_namekey-wordargument.
Previously,thatwasn'tpossibleandtherstprojectwhichwasreturnedbytheAPIwasalwaysselected.
(GITHUB-1293)[MiguelCaballer-@micafer]AddnewextraattributetothebaseNodeLocationclass.
(GITHUB-1282)[DimitrisMoraitis-@d-mo]RemovevariouscodepatternswhichwereinplaceforsupportingmultiplePythonversions,including2.
5and2.
6.
Libcloudhasn'tsupportedPythonPRIVATEKEY—–".
KeysinPKCS#8andnewerOpenSSHformatarenotsupported.
Formoreinformation,seehttps://libcloud.
readthedocs.
io/en/latest/compute/deployment.
html#supported-private-ssh-key-types(GITHUB-1314)UpdateParamikoSSHclienttothrowamoreuser-friendlyerrorifaprivatekeyleinanunsupportedformatisused.
(GITHUB-1314)[TomazMuraus]FixHTTP(s)proxysupportintheOpenStackdrivers.
(GITHUB-1324)[GabeVanEngel-@gvengel]Fixloggingconnectionclasssoitalsoworkswhendatatypeisbytearrayorbytes.
(GITHUB-1339)[TomazMuraus]Compute[GoogleComputeEngine]Fixthedriversolist_nodes()methoddoesn'tthrowifthereisanodeinaSUSPENDEDstate.
Alsoupdatethecodesoitdoesn'tcrashifanunknownnodestatewhichisnotdenedlocallyisreturnedbytheAPIwhenlistingnodes.
SuchstatesarenowmappedtoUNKNOWN.
(GITHUB-1296,LIBCLOUD-1045)Reportedbyrafaalistair.
[TomazMuraus][OpenStack]FixabugwithretrievingoatingIPaddresswhenadevice_ownerofaportiscompute:None.
(GITHUB-1295)[MiguelCaballer-@micafer][Packet]AddvariousnewextensionmethodstoPacket.
netdriver(ex_reinstall_node,ex_list_projects,ex_get_bgp_config_for_project,ex_get_bgp_config,ex_list_nodes_for_project,etc.
).
(GITHUB-1282)[DimitrisMoraitis-@d-mo]74Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1[Maxihost]AddnewcomputedriverforMaxihostprovider(https://www.
maxihost.
com/).
(GITHUB-1298)[SpyrosTzavaras-@mpempekos][AzureARM]AddvariousimprovementstotheAzureARMdriver:-AddfunctionalitytoresizeavolumeinAzure-Addfunctionalitytoupdatethenetworkproleofanode-Addfunctionalitytoupdateanetworkinterface'sproperties-AddfunctionalitytocheckIPaddressavailability(GITHUB-1244)[PalashGandhi-@palashgandhi][EC2]Allowusertopassarbitrarylterstolist_volumesmethodbypassingadictionarywithltersasex_filtersmethodargumentvalue.
(GITHUB-1300)[PalashGandhi-@palashgandhi][GCE]Addnewex_instancegroupmanager_set_autohealingpoliciesmethodtotheGCEdriver.
Thismethodallowsusertosettheautohealingpolicies(healthchecktouseandinitialdelay)onGCEinstancegroup.
(GITHUB-1286)[KentaMorris-@kentamorris][GCE]UpdateGCEdrivertoincludenewoperatingsystemimagessuchasUbuntu18.
04,RHEL8,etc.
(GITHUB-1304)[ChristopherLambert-@XN137][GCE]Addnewex_resize_volumemethodtothedriver.
(GITHUB-1301)[PalashGandhi-@palash-gandhi][OpenStack]AddvariousroutermanagementmethodstotheOpenStackdriver.
(GITHUB-1281)[MiguelCa-baller-@micafer][OpenStack]Fixex_resizemethod.
(GITHUB-1311)[MiguelCaballer-@micafer][OpenStack]Forconsistency,renameex_resizemethodtoex_resize_node.
Forbackwardcompatibil-ityreasons,leaveex_resizealiasinplace.
[TomazMuraus][Gridscale]AddnewdriverforGridscaleprovider(https://gridscale.
io).
(GITHUB-1305,GITHUB-1315)[Syd-neyWeber-@PrinceSydney][Oneandone]UpdateOneandonedrivertoaccomodatelatestchangestotheAPI.
Thismeansremovingdepre-catedex_remove_server_firewall_policymethodandreplacingport_fromandport_toargu-mentontherewallpolicywithasingleportattribute.
(GITHUB-1230)[AmelAjdinovic-@aajdinov][DigitalOcean]Updatelist_locationsmethodintheDigitalOceandrivertoonlyreturnsregionswhichareavailablebydefault.
Ifyouwanttolistalltheregions,youneedtopassex_available=Falseargumenttothemethod.
(GITHUB-1001)[MarkosGogoulos][EC2]Addnewex_modify_subnet_attributemethodtotheEC2driver.
(GITHUB-1205)[DanHun-saker-@danhunsaker][AzureARM]Addex_delete_public_ipmethodtotheAzureARMdriver.
(GITHUB-1318)[RezaShahriari-redha1419][EC2]UpdateEC2drivertothrowamoreuser-friendlyexceptionifauser/developertriestoprovideaninvalidvaluetypeforanitemvalueintherequestparamsdictionary.
Requestparametersaresentviaqueryparametersandnotviarequestbody,assuch,onlystringvaluesaresupported.
(GITHUB-1329,GITHUB-1321)ReportedbyJamesBednell.
[TomazMuraus][OpenStack]Addnewex_remove_security_group_from_nodemethod.
(GITHUB-1331)[MiguelCaballer-@micafer][OpenStack]Fixbrokenex_update_portmethod.
(GITHUB-1320)[MiguelCaballer-@micafer][Softlayer]Fixabugwithdriverincorrectlyhandlingthevalueofex_hourlyargumentinthecreate_node()methodwhichcausednodestoalwaysbecreatedwithhourlybilling,evenifthisargumentwassettoFalse.
(GITHUB-1334,GITHUB-1335)[@r2ronoha]1.
4.
Other75ApacheLibcloudDocumentation,Release3.
3.
1[GCE]AddoptionalcpuPlatformandminCpuPlatformattributestothenode.
extradictionary.
(GITHUB-1342,GITHUB-1343)[@yairshemla]Storage[AzureBlobs]EnabletheAzurestoragedrivertobeusedwiththeAzuriteStorageEmulatorandAzureBlobStorageonIoTEdge.
(LIBCLOUD-1037,GITHUB-1278)[ClemensWolff-@c-w][AzureBlobs]FixabugwithAzurestoragedriverworkswhenusedagainstastorageaccountthatwascreatedusingkind=BlobStrage.
ThisincludesupdatingtheminimumAPIversionused/supportedbythestoragedriverfrom2012-02-12to2014-02-14.
(LIBCLOUD-851,GITHUB-1202,GITHUB-1294)[ClemensWolff-@c-w,DavisKirkendall-@daviskirk][AzureBlobs]Increasethemaximumsizeofblockblobsthatcanbecreatedto100MB.
Thisincludesupdat-ingtheminimumAPIversionused/supportedbythestoragedriverfrom2014-02-14to2016-05-31.
(GITHUB-1340)[ClemensWolff-@c-w][AzureBlobs]Settheminimumrequiredversionofrequeststo2.
5.
0sincerequests2.
4.
0andearlierexhibitXMLparsingerrorsofAzureStorageresponses.
(GITHUB-1325,GITHUB-1322)[ClemensWolff-@c-w][AzureBlobs]DetectbadversionofrequeststhatleadstoerrorsinparsingAzureStorageresponses.
ThisscenarioisknowntohappenonRHEL7.
6whenrequestswasinstalledviayum.
(GITHUB-1332,GITHUB-1322)[ClemensWolff-@c-w][Common,CloudFiles]Fixupload_object_via_streamandensurewestartfromthebeginningwhencalculatinghashfortheprovidediterator.
Thiswayweavoidhashmismatcherrorsinscenariowhereprovidediteratorisalreadyiterated/seekeduponbeforecalculatingthehash.
(GITHUB-1326)[GabeVanEngel-@gvengel,TomazMuraus][BackblazeB2]Fixabugwithdrivernotworkingcorrectlyduetoaregressionwhichwasinadvertentlyintro-ducedinoneofthepreviousreleases.
(GITHUB-1338,GITHUB-1339)ReportedbyShawnNock-@nocko.
[TomazMuraus][BackblazeB2]Fixupload_object_via_streammethod.
(GITHUB-1339)[TomazMuraus]DNS[Cloudare]Re-writetheCloudareDNSdrivertouseCloudareAPIv4.
(LIBCLOUD-1001,LIBCLOUD-994,GITHUB-1292)[ClemensWolff-@c-w][GandiLiveDNS]AddnewdriverforGandiLiveDNSservice.
(GITHUB-1323)[RyanLee-@zepheiryan][PowerDNS]UpdatedriversoitworkswithAPIv3andv4.
#1328[@biggosh]ChangesinApacheLibcloud2.
5.
0General[NTTCIS]AddloadbalancerandcomputedriversforNTT-CIS,renamedimensiondatamodulestoNTT-CIS.
(GITHUB-1250)[MitchRaful][NTTCIS]Fixloadbalancerdocs.
(GITHUB-1270)[MitchRaful]UseassertIsNoneinsteadofassertEqualwithNoneintests(GITHUB-1264)[KenDreyer]UpdatingcommandlineargumentstocurrentversioninAzureexamples.
(GITHUB-1273)[mitar]76Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1[GCE,SoftLayer]UpdateGCEandSoftlayerdriverstoutilizecryptoprimitivesfromthecryptographylibraryinsteadofdeprecatedandunmaintainedPyCryptolibrary.
(GITHUB-1280)[RyanPetrello]Fixlibcloud.
enable_debugfunctionsoitdoesn'tleakopenlehandleandclosestheopenlewhentheprogramexitswhenadebugmodeisused.
[TomazMuraus]Updatevariousdrivers(CloudFiles,NTTCISetc.
)sotheydon'tleakopenlehandlesinsomesituations.
[TomazMuraus]Common[OpenStack]Handlemissinguserenabledattribute(GITHUB-1261)[KenDreyer][GoogleCloudStorage]HandleInteroperabilityaccesskeysofmorethan20characters.
(GITHUB-1272)[YoanTournade]Compute[OpenStack]ImplementOpenStack_1_1_NodeDriverex_get_snapshot(GITHUB-1257)[RickvandeLoo][OpenStack]PaginationinvariousOpenStack_2_NodeDrivermethods(GITHUB-1263)[RickvandeLoo][OpenStack]ImplementOpenStack_2_NodeDriverex_create_subnet(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverex_delete_subnet(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverlist_volumes(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverex_get_volume(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDrivercreate_volume(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverdestroy_volume(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverex_list_snapshots(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDrivercreate_volume_snapshot(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverdestroy_volume_snapshot(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverex_list_security_groups(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverex_create_security_group(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverex_delete_security_group(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer]1.
4.
Other77ApacheLibcloudDocumentation,Release3.
3.
1[OpenStack]ImplementOpenStack_2_NodeDriverex_create_security_group_rule(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverex_delete_security_group_rule(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]ImplementOpenStack_2_NodeDriverex_list_oating_ip_pools(LIBCLOUD-874,GITHUB-1242)[MiguelCaballer][OpenStack]Fixparse_errorif'code'notinAPIresponsemessage(GITHUB-1242)[MiguelCaballer][OpenStack]Adapt_to_portfunctiontoworkwitholdOpenStackversions(GITHUB-1242)[MiguelCaballer][OpenStack]UseSUSPENDEDNodeStateinOpenStackdriver(GITHUB-1269)[MiguelCaballer][UpCloud]UpdatedocumentationforUpClouddriver(LIBCLOUD-1026,GITHUB-1259)[IlariMkel][NTTCIS]Fixindentinginex_initiate_drs_failoverdocstring(GITHUB-1271)[RickvandeLoo][NTTCIS]Changeendpoint'canada'to'ca'inlibcloud/common/nttcis.
py(GITHUB-1270)[MitchRaful][OpenStack]Fixdetach_volumemethodsoitworkswithv2volumes.
(GITHUB-1267)[RickvandeLoo][CloudSigma]FixCloudSigmadriversoitcorrectlyhandlessubscriptionobjectswithoutthestart_timeand/orend_timeattribute.
(GITHUB-1284,LIBCLOUD-1040)[aki-k,TomazMuraus]Storage[Azure]Fixupload_object_via_streammethodsoitalsoworkswithiteratorswhichdon'timplementseek()method.
Iftheiteratordoesn'tsupportseek,entireiteratorcontentwillbebufferedinmemory.
(LIBCLOUD-1043,GITHUB-1287)[ClemensWolff][CloudFiles]Fixdownload_object_as_streammethodintheCloudFilesdriver.
Thisregression/bugwasinadvertentlyintroducedwhenmigratingcodetorequests.
(LIBCLOUD-1039,GITHUB-1283)[MattSeymour][CloudFiles]FixabugwithChunkStreamReaderclassandmakesureledescriptorisalsoclosediftheiteratorisn'tfullyexhaustedoriftheiteratorisneverreadfrom.
NOTE:Thispotentialopenledescriptorleakageonlyaffectedcodewhichutilizedex_multipart_upload_objectmethod.
[TomazMuraus]Container[Docker]ImprovedocstringforRegistryClient(GITHUB-1254)[KenDreyer]DNSAddnewdriverforRcodeZeroDNS(GITHUB-1256,LIBCLOUD-1025)[MikeAT][DigitalOcean]UpdateDigitalOceandriversoitsupportsttlattributeforRecordobjects.
Thisincludessup-portforspecifyingarecordttlviaextra['ttl']attributewhencreatingandupdatingarecord.
(GITHUB-1252LIBCLOUD-1022)[KevinRoy]78Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1StorageAddsmissingdocsforparamex_prex&addstoDummyStore.
Addex_prexkwargtothelist_container_objectsmethodsinthebaseanddummyclasses.
(GITHUB-1275)[RichardARPANET]ChangesinApacheLibcloud2.
4.
0RefuseinstallationwithPython2.
6andPython3.
3(supportwasalreadydroppedinLibcloud2.
3.
0)SupportPython3.
7(GITHUB-1227,GITHUB-1236)[AndreasHasenack,AndrewStarr-Bochicchio,QuentinPradet]CleanupvariousPythonles(GITHUB-1182,GITHUB-1183,GITHUB-1185,GITHUB-1186,GITHUB-1187,GITHUB-1188)[RémyLéone]Allowrunningtestswithhttp_proxyset(GITHUB-1236)[AndreasHasenack]Common[OpenStack]Documentopenstack_connection_kwargsmethod(GITHUB-1219)[KenDreyer][OpenStack]HandlemissinguseremailinOpenStackIdentityUser(GITHUB-1249)[KenDreyer]Compute[ARM]SupportOSdisksizedenitiononnodecreation(GITHUB-1196)[VojtaBartos][DigitalOcean]SupportoatingIPs(GITHUB-1177)[RickvandeLoo][DigitalOcean]Supportattach/detachforoatingIPs(GITHUB-1191)[RickvandeLoo][DigitalOcean]Addex_get_node_details(GITHUB-1221)[RickvandeLoo][DigitalOcean]Addtagsextraattributetocreate_node(GITHUB-1212)[NikitaChebykin][DimensionData]FixIndexErrorinlist_images(GITHUB-1171)[AdamFriedman][EC2]AddAWSeu-west-3(Paris)region(GITHUB-1175)[AnthonyMonthe][EC2]Adddescriptiontoex_authorize_security_group_ingress(GITHUB-1122)[ArturoNoha][EC2]AddedscripttoautomaticallygetEC2instancesizes(GITHUB-1211)[AnthonyMonthe,QuentinPradet][EC2]Updateinstancesizes(GITHUB-1238)[WardVandewege][EC2]Accepttagswhencreateasnapshot(LIBCLOUD-1014,GITHUB-1240)[RafaelGonalves][GCE]ExpandFirewalloptionscoverage(LIBCLOUD-960,GITHUB-1144)[maxlip][GCE]Expandnetworkandsubnetworkoptionscoverage(LIBCLOUD-985,GITHUB-1181)[maxlip][GCE]Extendex_create_addresstoallowinternalipcreation(GITHUB-1174)[JeremySolarz][GCE]AllowsharedVPCinmanagedinstancegroupcreation(GITHUB-1179)[BorisChazalet][GCE]Supportdisk_sizeparameterforbootdiskwhencreatinginstance(LIBCLOUD-973,GITHUB-1162)[RahulPaigavan][GCE]Updatepublicimageprojectslist(LIBCLOUD-961,GITHUB-1143)[SeanMarlow][GCE]Fix_nd_zone_or_regionfor>500instances(GITHUB-1203)[LéoFerlin-Sutton]1.
4.
Other79ApacheLibcloudDocumentation,Release3.
3.
1[GCE]Allowrouting_mode=Noneinex_create_network(GITHUB-1217)[DanielHunsaker][OpenStack]ImplementGlanceImageAPIv2(GITHUB-1151)[RickvandeLoo][OpenStack]Fixspellinginex_lesdescription(GITHUB-1197)[KenDreyer][OpenStackv2]Allowlistingimagemembers(GITHUB-1172)[RickvandeLoo][OpenStackv2]Allowcreatingandacceptingimagemembers(GITHUB-1176)[RickvandeLoo][OpenStackv2]Fiximagemembersmethods(GITHUB-1190)[RickvandeLoo][OpenStack]FixAPIdocfordelete_oating_ip(GITHUB-1218)[KenDreyer][OpenStack]Implementportattaching/detaching(GITHUB-1225)[RickvandeLoo][OpenStack]Addmethodsforgettingandcreatingports(GITHUB-1226)[AlexanderGrooff][OpenStack]Addget_usermethod(GITHUB-1216)[KenDreyer][OpenStack]Addex_list_subnetstoOpenStack_2_NodeDriver(GITHUB-1215,LIBCLOUD-604)[MiguelCa-baller][OpenStack]TheOpenStack_2_NodeDriverusestwoconnections(GITHUB-1215,LIBCLOUD-997)[MiguelCaballer][OpenStack]TheOpenStack_2_NodeDriver/v2.
0/networksinsteadof/os-networks(GITHUB-1215,LIBCLOUD-998)[MiguelCaballer][Scaleway]NewScalewaydriver(GITHUB-1121,GITHUB-1220)[DanielHunsaker,NándorIstvánKrácser,RémyLéone][Scaleway]UpdateScalewaydefaultAPIhost(GITHUB-1239)[RémyLéone]DNS[GoogleCloudDNS]Documentdriverinstantiation(GITHUB-1198)[GarethMcFarlane]StorageUpdatedocstringforstorageproviderclass(GITHUB-1201)[ClemensWolff][AzureBlobStorage]Allowlteringlistsbyprex(LIBCLOUD-986,GITHUB-1193)[JoshuaHawkinson][AzureBlobStorage]Updatedriverdocumentation(GITHUB-1208)[ClemensWolff][AzureBlobStorage]Fixupload/downloadstreams(GITHUB-1231)[MichaelPerel][AzureBlobStorage]FixPageBlobheaders(GITHUB-1237)[AndreasHasenack][S3]Guesss3uploadcontenttype(LIBCLOUD-958,GITHUB-1195)[IurideSilvio][S3]AddAmazonS3(cn-northwest-1)StorageDriver(GITHUB-1241)[@yangkang55]OtherFixedspellingin2.
0changesdocumentation(GITHUB-1228)[JimmyCasey]80Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ChangesinApacheLibcloud2.
3.
0DropsupportforPython2.
6andPython3.
3They'renolongersupported,andthePythonecosystemisstartingtodropsupport:twoofourtestdependenciesnolongersupportthem.
[QuentinPradet]Madepytest-runneroptional(GITHUB-1167)[VladGlagolev]CommonImprovewarningwhenCA_CERTS_PATHisincorrectlypassedasalist(GITHUB-1118)[QuentinPradet]Cleanedupandcorrectedthird-partydriversdocumentation(GITHUB-1148)[DanielHunsaker]ModernizedafewPythonexamples(GITHUB-1164)[BatuhanOsmanTaskaya][OpenStack]AuthentifywithupdatedIdentityAPI(LIBCLOUD-965,GITHUB-1145)[MiguelCaballer]ComputeFix"wait_until_running()methodsoitalsoworkscorrectlyanddoesn'tappend"None"totheaddresseslistifnodehasnoIPaddress.
(GITHUB-1156,LIBCLOUD-971)[TobiasPaepke][ARM]Fixcheckingfor"locationisNone"inseveralfunctions(LIBCLOUD-926,GITHUB-1098)[SamehElsharkawy][ARM]FixerrorwhenusingSSHkeyauthwithPython3(GITHUB-1098)[SamehElsharkawy][ARM]FixAPIcallonpowerOff,understandPAUSEDstate(GITHUB-1003)[MarkosGogoulos][ARM]DeleteVHDsmorereliablyindestroy_node(),raiseexceptiononunhandlederrors(GITHUB-1120)[LucasDiPentima][ARM]FixapiversionusedtolistanddeleteNICs(GITHUB-1128)[PeterAmstutz][ARM]Allowfasterlist_nodes()withex_fetch_power_state=False(GITHUB-1126)[PeterAmstutz,LucasDiPentima][ARM]Fixdelete_old_vhd(GITHUB-1137)[PeterAmstutz,LucasDiPentima][ARM]Limitnumberofretriesindestroy_node(GITHUB-1134)[PeterAmstutz,LucasDiPentima][ARM]FixRetry-Afterheaderhandling(GITHUB-1139)[LucasDiPentima][CloudStack]HandleNICswithoutaddresses(GITHUB-1141)[Pierre-YvesRitschard][CloudStack]Addchangesizeandrestore(LIBCLOUD-975,GITHUB-1166)[MauroMurari][DigitalOcean]Addex_enable_ipv6inDigitalOcean_v2driver(GITHUB-1130)[RickvandeLoo][DigitalOcean]Addsupportfortagsinlist_nodes()(LIBCLOUD-967,GITHUB-1149)[MikeFischer][DigitalOcean]Addrebuildandresizecommands(LIBCLOUD-977,GITHUB-1169)[AdamWight][EC2]Addnewx1.
16xlargeandx1e.
32xlargeinstancetype.
(GITHUB-1101)[AnthonyMonthe][EC2]AddAWSEC2c5series(GITHUB-1147)[AnthonyMonthe][EC2]AddAWSEC2M5sizes(GITHUB-1159)[AnthonyMonthe][EC2]UpdatepricinginformationforEC2instances.
[TomazMuraus][EC2]Allowcn-north-1evenwithoutpricinginformation(LIBCLOUD-954,GITHUB-1127)[QuentinPradet][EC2]FixEBSvolumeencryption(GITHUB-1008)[SergeyBabak]1.
4.
Other81ApacheLibcloudDocumentation,Release3.
3.
1[ECSAliyun]Supportmodify_security_group_attributes(GITHUB-1157)[ZhangYiming][GCE]Allowaddinglabelstoimages(GITHUB-1138)[KatrielTraum,EricJohnson][GCE]Allowaddinglicensestringstoimages(GITHUB-1136)[KatrielTraum,EricJohnson][GCE]SupportGCEnodelabels.
(LIBCLOUD-934,GITHUB-1115)[@maxlip][GCE]FixGCEListpagination.
(GITHUB-1095)[YapSokAnn][GCE]Allowsettingserviceaccountininstancetemplates(LIBCLOUD-947,GITHUB-1108)[EvanCarter][GCE]AddsupportforprivateIPaddressesinGCEinstancecreation(LIBCLOUD-944,GITHUB-1107)[GarethMcfarlane][GCE]Allowforuseofsharednetwork(VPC)andsubnetwork(GITHUB-1165)[BorisChazalet][GCE]Addsupportforaccelerators(LIBCLOUD-963,GITHUB-1163)[MichaelJohnson][ProtBricks]UpdatedriverandaddsupportforthenewAPIv4.
(GITHUB-1103)[NurfetBecirevic][ProtBricks]Fixlist_snapshots()method(GITHUB-1153)[ChadPhillips][UpCloud]NewdriverforUpCloud(LIBCLOUD-938,GITHUB-1102)[MikaLackman,IlariMkel][UpCloud]Usedisksizeandstoragetieralsowhencreatingnodefromtemplate(LIBCLOUD-952,GITHUB-1124)[MikaLackman][UpCloud]Allowtodenehostnameandusername(LIBCLOUD-951,LIBCLOUD-953,GITHUB-1123,GITHUB-1125)[MikaLackman][UpCloud]Addpricinginformationtolist_sizes(LIBCLOUD-969,GITHUB-1152)[MikaLackman]StorageAddedDigitalOceanSpacesdriver(LIBCLOUD-955,GITHUB-1129)[AndrewStarr-Bochicchio][DigitalOceanSpaces]AddsupportforAMS3region(GITHUB-1142)[AndrewStarr-Bochicchio][DigitalOceanSpaces]AddsupportforSGP1region(GITHUB-1168)[AndrewStarr-Bochicchio]Fixabug/regressionwhichresultedinincreasedmemoryconsumptionwhenusingdownload_objectmethod.
Thismethodwouldstorewholeobjectcontentinmemoryeventhoughtherewasnoneedforthat.
Thisregressionwasintroducedin2.
0.
0whenwemovedtousingrequestslibrary.
(GITHUB-1132)[QuentinPradet]Fixaregressionwithhashcomputationperformanceandmemoryusageonobjectuploadinadvertentlyintro-ducedin2.
0.
0andmakeitmoreefcient.
(GITHUB-1135)[QuentinPradet]ChangesinApacheLibcloud2.
2.
1CommonFixanissuewithinstallationfailingonsomeoperatingsystemandlesystemscombinations(e.
g.
ecryptfslayeredontopofext4)whichdon'tsupportlenameslongerthan143characters.
(LIBCLOUD-946,GITHUB-1112)ReportedbyCyrilleVerrier.
[TomazMuraus]82Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Compute[EC2]addg3instancetypes[GITHUB-1101](@zulupro)[EC2]add'end'toec2reserved_node[GITHUB-1099](@xofer)Decreasesleepdelay(from1.
5to0.
2seconds)insideparamikoclientwhichisusedtopreventbusywaitingwhilewaitingfordataonthechannel.
Thisshouldcausedeployscriptswhichproducealotofoutputinincrementalmannertonishfaster.
[TomazMuraus]FixaregressionintheAzureARMdriverwhichdidn'tallowcustomstorageURIsufxtobeusedwithcre-ate_node.
(GITHUB-1110)[LucasDiPentima]TestsMakesurewenormalizeheadervaluesandcastallthenumberstostringsinbaseconnectionclassesusedbytests.
(LIBCLOUD-945,GITHUB-1111)ReportedbyErichEckner.
[TomazMuraus]ChangesinApacheLibcloud2.
2.
0Compute[EC2]addg3instancetypes[GITHUB-1101](@zulupro)[EC2]add'end'toec2reserved_node[GITHUB-1099](@xofer)ChangesinApacheLibcloud2.
2.
0Common[GCE]ScrapepricesforGCEAustraliaRegion[GITHUB-1085](FranciscoRos)Compute[ARM]AddoptiontocreatestaticpublicIP[GITHUB-1091,LIBCLOUD-918](AkiKetolainen)[SOFTLAYER]Addget_imagemethodtoclass[GITHUB-1066](FrancoisRegnoult)[ARM]AddStoragesupport,volumes,snapshots[GITHUB-1087](SergeyBabak)Container[DOCKER]FixestosupportTLSconnection[GITHUB-1067](johnnyWalnut)1.
4.
Other83ApacheLibcloudDocumentation,Release3.
3.
1DNS[ROUTE53]FixforTXTandSPFrecords,whenuserdidn'tescapsulatedatainquotes,theAPIwouldreerror.
Asreportedby@glyph[LIBCLOUD-875,GITHUB-1093](AnthonyShaw)[LINODE]Addprioritytotheextradictionaryinrecordinstances[GITHUB-1088](@mete0r)LoadBalancerFixedAWSALB/ELBdriverinitmethodtoinstantiatenestedconnectionobjectproperly[LIBCLOUD-936,GITHUB-1089](AntonKozyrev)Storage[CLOUDFILES]UpdateOpenStackSwiftConnectiontoworkwithauthversion3.
0[GITHUB-1068](HakanCarlsson)[CLOUDFILES]AddSSLURIsupport[GITHUB-1076,LIBCLOUD-458](@ayleph)ChangesinApacheLibcloud2.
1.
0Common[AWS]Updatepricesandxsomeregionnames[GITHUB-1056](FranciscoRos)Fixbuginutils.
decoratorswrapexceptionmethod,usedbyvspheredriver[GITHUB-1054](AnthonyShaw)UsePyTestastheunittestingrunner(AnthonyShaw)UseofLXMLisnowdisabledbydefalt,uselibcloud.
utils.
py3.
DEFAULT_LXML=Truetoreen-able.
LXMLhascompatibilityissueswithanumberofdriversandetreeisastandardpackage.
[GITHUB-1038](AnthonyShaw)SwitchRawResponseclasstousecontentbodyinsteadoftextbody,upto10xperformanceimprovementformethodslikeStorageDriver.
download_object[GITHUB-1053](QuentinPradet)Compute[OPENSTACK]AddsupportforNova2.
xandKeystone3[GITHUB-1052](AnthonyShaw)[GCE]AddloadBalancingSchemeparameterforex_create_forwarding_rulemethodinGCEdriver.
[GITHUB-1079](@sT331h0rs3)[GCE]Fixerrorcodesnotbeingparsedincertainscenarios[GITHUB-1074,LIBCLOUD-925](micafer)[EC2]Fixnode'sBlockDeviceMappingwasparsedfromincorrectmapping.
EbsInstanceBlockDeviceisdif-ferentfromEbsBlockDevice.
[GITHUB-1075](GennadiyStas)[GANDI]Fixesthelocationnameinimageandinstancetypeclasses[GITHUB-1065](Sayoun)[GCE]Fixmethodforcreateinstanceproperties,itpreviouslyignoredthedisktypeparameteranddefaultedtopd-standard.
[GITHUB-1064](EvanCarter)FixmissingreturndatafromEC2billingproductmethods[GITHUB-1062](AlexMisstear)Handle[VULTR]APIratelimiting[GITHUB-1058](FranciscoRos)84Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1FixKilidrivernotcorrectlyxingtheauthversionforopenstackto2.
0_password[GITHUB-1054](AnthonyShaw)[EC2]Addi3instancetypesforAWS[GITHUB-1038](StephenMullins)[VULTR]ExtendextradictofVultrsizestoincludeadditionalelds(plan_typeandavailable_locations)[GITHUB-1044](FranciscoRos)ContainerNewdriverforGoogleContainerEngine[GITHUB-1059](AndyMaheshwari)[KUBERNETES]Fixget_containermethodrespondingwithNone[GITHUB-1054](AnthonyShaw)[DOCKER]Fixforstart_containermethod[GITHUB-1049](@johnnyWalnut)[DOCKER]xaddanextracheckotherwiselist_containersbreakswithAttributeErrorwhenfromImagesisspecied[GITHUB-1043](@johnnyWalnut)Storage[S3]Fixraiseins3.
upload_object_via_stream[LIBCLOUD-914,GITHUB-1055](QuentinPradet)ChangesinApacheLibcloud2.
0.
0CommonFixOpenStackdriversnotcorrectlysettingURLswhenusedwithidentityAPI,woulddefaultto127.
0.
0.
1andservicecatalogURLswerenotadheredto.
[GITHUB-1037,LIBCLOUD-912,LIBCLOUD-904](AnthonyShaw)FixAliyunECS,LoadbalancerandstorageadapterswhenusingunicodeUTF-8charactersinthenamesofresourcesin2.
0.
0rc2500images.
(GITHUB-939)[ScottCrunkleton][ec2]Addst1andsc1volumetypestovalidtypes.
(GITHUB-925)[SeanGoller][digitalocean]addex_change_kernelinDigitalOcean_v2driver.
(GITHUB-922)[RickvandeLoo][digitalocean]addex_hard_rebootinDigitalOcean_v2driver.
(GITHUB-920)[RickvandeLoo][openstack]addex_start_nodefortheopenstackdriver.
(GITHUB-919)[RickvandeLoo]88Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1[vultr]ExtraAttributesforNodeCreationonVultr.
(GITHUB-917)[FahriCihanDemirci][vultr]ImplementSSHKeyCreate/DeleteMethodsforVultr.
(GITHUB-914)[FahriCihanDemirci][dimensiondata]Nolongerthrowerrorwhenpoweringoffanodethatisalreadystopped.
(GITHUB-912)[SamuelChong][dimensiondata]Refactorcreate_nodeforMCP2tosupportCaaSAPI2.
3feature.
CannowspecifyNet-workAdapterNameforprimaryandadditionalNIC.
Parametersincreate_nodefunctionistailoredforMCP2.
(GITHUB-902)[SamuelChong]Volumesnapshotoperations,i.
e.
creating,listinganddeletingvolumesnapshots,fortheDigitalOceandriver.
(LIBCLOUD-861,GITHUB-909)[FahriCihanDemirci]AddedsnapshotmanagementtoOVHcompute.
(GITHUB-897)[AnthonyMonthe][GCE]SupportforHTTP(S)proxieswithBackendServices.
(GITHUB-856)[TomMelendez]Container[docker]Asreportedinthecorrespondingbug,thedockerdaemonwillrespondinaninstall_imagecallwithallthemessagesproducedduringtheprocedureparsedasjsondocs.
Inthatcasetheresponseheadersalsocontainthevalue'transfer-encoding':'chunked'.
ThatkindofresponsecannowbeparsedproperlybytheDockerResponseparse_bodymethod.
Also,anothersmallchangeisthatpreviouslytheidofthenewimagewasmarkedinthejsondocumentasid,butnowit'smarkedassha256,sotheregexusedtodiscovertheidhasbeenupdated.
(GITHUB-918)[PavlosTzianos]LoadBalancingIntroduceAWSApplicationLoadBalancer(ALB)driver.
(LIBCLOUD-869,GITHUB-936)[AntonKozyrev]FixbugwhereGCELoadbalancersupposesthatallVMshavepublicips.
(LIBCLOUD-879,GITHUB-952)[ChrisWalker]Storage[s3]AddAP-Southeast2asregion.
[google]PreventGCEauthtohideS3auth.
(GITHUB-921)[QuentinPradet][GCS]Fixedsomegoogle_storage.
pyURLcleaning.
(GITHUB-901)[ScottCrunkleton]ChangesinApacheLibcloud1.
3.
0GeneralIntroducednewbaseAPIforinstantiatingdrivers.
(GITHUB-822)[AnthonyShaw]AddedcerticatepathforSLES12/OpenSUSE12.
(GITHUB-884)[MichaelCalmer]DeprecateDigitalOceanv1APIsupportinfavourofv2API.
(GITHUB-889,GITHUB-892)[AndrewStarr-Bochicchio]DeprecateRunAboveclouddriversinfavourofnewOVHclouddriver.
(GITHUB-891)[AnthonyMonthe]1.
4.
Other89ApacheLibcloudDocumentation,Release3.
3.
1ComputeFixreportingfunctionfordetailedadminlogsinDimensionDataDriver.
(GITHUB-898)[AnthonyShaw]AddededitrewallfunctionalitytoDimensionDatadriver.
(GITHUB-893)[SamuelChong]Bugx-FixedlistingnodesissueinPython3.
(LIBCLOUD-858,GITHUB-894)[FahriCihanDemirci]AddedFCU(FlexibleComputeUnit)supporttotheOutscaledriver.
(GITHUB-890)[JavierM.
Mellid][googlecompute]Add"WINDOWS"guestOsFeaturesoption.
(GITHUB-861)[MaxIllfelder]WhencreatingvolumesonOpenStackwithdefaultsforlocationorvolume_type,newerOpenStackversionswouldthrowerrors.
TheOpenStackdriverwillnowonlypostthoseargumentsifnon-NoneType.
(GITHUB-857)[AllardHoeve]Whenfetchingthenodedetailsofanon-existingnode,OpenStackwouldraiseaBaseHTTPErrorinsteadofreturningNone,aswasintended.
Fixedtestsandcode.
(GITHUB-864)Addedex_stop_nodetotheOpenStackdriver.
(GITHUB-865)[AllardHoeve]Whencreatingvolumesnapshot,theargumentsnameanddescriptionaretruelyoptionalwhenworkingwithnewerOpenStackversions.
TheOpenStackdriverwillnowonlypostthostargumentsiftheyarenon-NoneType.
(GITHUB-866)[AllardHoeve]StorageVolumeSnapshotnowhasanattributenamethathasthenameofthesnapshotiftheprovidersupportsit.
Thisusedtobe.
extra['name'],butthatisinconsistentwithNodeandStorageVolume.
Theextradictstillholdsnameforbackwardscompatibility.
(GITHUB-867)[AllardHoeve]ContainerIntroducednewRancherdriver(GITHUB-876)[MarioLoria]FixedbuginDockerutillibraryforfetchingimagesfromthedockerhubAPI.
APIwasreturning301andredirectswerenotbeingfollowed.
(GITHUB-862)[AnthonyShaw]LoadBalancerAddedfetchtagssupportinelbdriver.
(GITHUB-848)[AntonKozyrev]StorageAddedstoragepermissionsforGoogleCloudStorage.
(GITHUB-860)[ScottCrunkleton]ChangesinApacheLibcloud1.
2.
1BackupFixissueenablingbackupsonDimensionDatadriver.
(GITHUB-858)[MarkMaglana,JeffDunham,AnthonyShaw]90Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ChangesinApacheLibcloud1.
2.
0GeneralFixcachingofauthtokensintheGoogleComputeEnginedrivers.
Nowwemakesurethattheleistruncatedbeforewritinganewtoken.
Nottruncatingthelewouldcauseissuesifthenewtokenisshortedthentheexistingonewhichiscachedinthele.
(GITHUB-844,LIBCLOUD-835)[PaulTiplady]Compute[gce]FiximageundeprecationinGCE.
(GITHUB-852)[MaxIllfelder][gce]AddedManagedInstanceGroups.
(GITHUB-842)[TomMelendez][gce]Allowundeprecationofanimage.
(GITHUB-851)[MaxIllfelder][cloudstack]BUGFIXValueswithwildcardsfailedsignaturevalidation.
(GITHUB-846)[RonaldvanZantvoot][cloudstack]AddedStorageState-Migratingtothecloudstackdriver.
(GITHUB-847)[Marc-AurèleBrothier][googlecompute]Updatecopyimagelogictomatchcreateimage.
(GITHUB-828)[MaxIllfelder]RemovedHDattributefromtheAbiquocomputedrivertosupportthe3.
4API.
(GITHUB-840)[DavidFreed-man]Addimageandsizedetailstolist_nodesresponseinDimensionDatadriver.
(GITHUB-832)[AnthonyShaw]AddsupportforchangingVMadminpasswordinVMwaredriver.
(GITHUB-833)[JuanFontAlonso]AddBarcelona(Spain)regiontotheAuroraComputedriver.
(GITHUB-835)[WidodenHollander]Variousimprovementsinthelibvirtdriver.
(GITHUB-838)[ReneKjellerup]LoadbalancerAddsupportfortemporaryIAMrolecredentials(token)totheAWSELBdriver.
(GITHUB-843)[AntonKozyrev]DNSUpdatedthe'extra'parameterinupdate_record()tobeoptionalinauroradriver.
(GITHUB-830)[WidodenHollander]SupportforiteratingoverrecordsandzonesintheAuroraDNSdriver.
(GITHUB-829)[WidodenHollander]AddsupportforDS,PTR,SSFHFPandTLSArecordtypetotheAuroraDNSdriver.
(GITHUB-834)[WidodenHollander]ContainerAddnetworkmodeandlabelswhencreatingcontainerswithindockerdriver.
(GITHUB-831)[JamieCressey]1.
4.
Other91ApacheLibcloudDocumentation,Release3.
3.
1StorageFixauthenticationissueinS3/Chinaregion,disabledmultipartuploadsasnotsupportedbyregion.
(GITHUB-839)[LukeMortt]ChangeswithApacheLibcloud1.
1.
0GeneralAddsupportforautomaticSNI(SSLextension)usingthehostnamesuppliedtoconnectto.
Note:ThisfunctionalityisonlyavailableinPython2.
7.
9andPython>=3.
2.
(LIBCLOUD-827,GITHUB-808)[DavidFreedman]ComputeAddsupportimageguestOSfeaturesinGCEdriver.
(GITHUB-825)[MaxIllfelder]AddedforceCustimizationoptionforvclouddirectordriver.
(GITHUB-824)[JuanFont]AddnodelookupbyUUIDforlibvirtdriver.
(GITHUB-823)[FrankWu]AddblockstoragesupporttoDigitalOceannodedriver.
(GITHUB-807)[AdamWolfeGordon]AddSASLauthsupporttolibvirtdriver.
(GITHUB-809)[Katana-Steel]AllowVIPsinDimensionDatadrivertobindtoanyport.
(GITHUB-818)[MarkMaglana]AddsupportfordeletingasecuritygrouptotheAliyunECSdriver.
(GITHUB-816)[HengWu]Addex_force_customizationargumenttotheex_deploy_nodeinvClouddriver.
(GITHUB-824)[JuanFont]Addsupportforlistingattributesforaparticularsecuritygroup(ex_list_security_group_attributes)totheAliyunECSdriver.
(GITHUB-826)[HengWu]AddnewMumbai,IndiaregiontotheEC2driver.
[TomazMuraus]AdddriverforthenewAWScn-north-1region.
(GITHUB-827,LIBCLOUD-820)[JamieCressey]FixauthenticationwithtemporaryIAMrolecredentials(token)intheEC2driver.
(GITHUB-820)[AlejandroGonzález]ContainerFixedAPIcompatibilityforDockerContainerdriverwithAPI1.
24,setdrivertouseversionedURLforallcommunication.
Backportedchangesto1.
21API(GITHUB-821)[AnthonyShaw]LoadBalancerAddedadditionalparameterstotheRackspacedriverinlist_balancersforlteringandsearching.
(GITHUB-803)[JooPauloRaittes]92Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ChangeswithApacheLibcloud1.
0.
0GeneralFixaregressionwithtimeoutargumentprovidedvia_ex_connection_class_kwargsmethodbeingoverridenwithNoneinsidetheBaseDriverconstructormethod.
ReportedbyJayRolette.
(GITHUB-755)[TomazMuraus,JayRolette]FixOpenStackv3authenticationandallowusertoprovideacustomvaluefortheOpenStackdomainparame-ter.
PreviouslyonlypossiblevalueasadefaultvalueofDefault.
(GITHUB-744)[LionelSchaub]AddsupportforauthenticatingagainstKeystoneandOpenStackbasedcloudsusingOpenIDConnecttokens.
(GITHUB-789)[MiguelCaballer]ComputeGCEnodescanbelaunchedinasubnetwork(GITHUB-783)[LarsLarsson]AddSubnetworkstoGCEdriver(GITHUB-780)[EricJohnson]FixmissingpricingdataforGCE(LIBCLOUD-713,GITHUB-779)[EricJohnson]AddImageFamilysupportforGCE(GITHUB-778)[RickWright]FixaraceconditiononGCEdriverlist_nodes()-InvokingGCE'slist_nodes()whilesomeVMsarebeingshutdowncanresultinthefollowinglibcloud.
common.
google.
ResourceNotFoundErrorexceptiontoberaised.
(GITHUB-727)[LénacHuard]Allowusertolternodesbylocationbyaddingoptionallocationargumenttothelist_nodes()methodintheCloudStackdriver.
(GITHUB-737)[LionelSchaub]FixOpenStackIPtyperesolution-makesureIPaddressesarecorrectlycategorizedandassignedonprivate_ipsandpublic_ipsNodeattribute.
(GITHUB-738)[LionelSchaub]AddnewPerth,AustraliaandManila,PhilippinesregiontotheCloudSigmav2driver.
[TomazMuraus]Updatelibvirtdriversoitreturnsfalseifanon-locallibvirtURLisused(rightnowonlylocalinstancesaresupported).
(LIBCLOUD-820,GITHUB-788)[RenéKjellerup]UpdatelibvirtdrivertouseipneightcommandinsteadofarptoretrievenodeMACaddressifarpcommandisnotavailableorthecurrentuserdoesn'thavepermissiontouseit.
(LIBCLOUD-820,GITHUB-788)[RenéKjellerup]Updatecreate_volumemethodintheCloudStackdriverandaddex_volume_typeargumenttoit.
Ifthisargumentisprovided,avolumewhichnamesmatchesthisargumentvaluewillbesearchedandselectedamongtheavailablediskofferings.
(GITHUB-785)[GregBishop]StorageAddsupportforAWSsignaturev4totheOutscalestoragedriver.
(GITHUB-736)[JavierM.
Mellid]AddnewS3RGWstoragedriver.
(GITHUB-786,GITHUB-792)[JavierM.
Mellid]LoadbalancerUpdateAWSELBdrivertousesignatureversion4forauthentication.
Thisway,thedriveralsoworkwiththeeu-central-1region.
(GITHUB-796)[TobiasPaepke]1.
4.
Other93ApacheLibcloudDocumentation,Release3.
3.
1DNSAddBuddyNSdriver.
(GITHUB-742)[OltjanoTerpollari]AddedDNSPoddriver(https://www.
dnspod.
com).
(GITHUB-787)[OltjanoTerpollari]ChangeswithApacheLibcloud1.
0.
0-rc2GeneralFixabugwithconsumingstdoutandstderrintheparamikoSSHclientwhichwouldmanifestitselfunderveryrareconditionwhenaconsumedchunkonlycontainedasinglebyteorpartofamultibyteUTF-8character.
[LakshmiKannan,TomazMuraus]Increasedefaultchunksizefrom1024to4096bytesintheparamikoSSHclient.
Thisresultsinsmallernumberofreceivecallsontheaverage.
[TomazMuraus]FixtoDimensionDataAPIaddressforMiddle-EastandAfrica(GITHUB-700)[AnthonyShaw]AdditionofDimensionDataAustraliafederalgovernmentregiontodimensiondatadrivers.
(GITHUB-700)[AnthonyShaw]Throwamoreuser-friendlyexceptionon"Noaddressassociatedwithhostname".
(GITHUB-711,GITHUB-714,LIBCLOUD-803)[TomazMuraus,ScottCrunkleton]Removedeprecatedproviderconstantswiththeregioninthenameandrelateddriverclasses(e.
g.
EC2_US_EAST,etc.
).
Thosedrivershavemovedtosingleproviderconstant+regionconstructorargumentmodel.
[TomazMuraus]Introducenewlist_regions'classmethodonthebasedriverclass.
Thismethodistobeusedwithproviderdriverswhichsupportmultipleregionsandregionconstructorargument.
Itallowsuserstoenumerateavailable/supportedregions.
[TomazMuraus]Compute[dimensiondata]addedsupportforVMWaretoolsVMinformationinsidelist_nodesresponses(GITHUB-734)[JeffDunham][ec2]addedex_encryptedandex_kms_key_idoptionalparameterstothecreatevolumemethod(GITHUB-729)[ViktorOgnev][dimensiondata]addedsupportformanaginghostanti-afnityrules,addedpagingsupporttoallsupportedcallsandaddedsupportforrequestingpriorityorderingwhencreatingACLrules(GITHUB-726)[JeffDunham][openstack]whencreatingoatingIPs,addedpool_idasanoptionalargument(GITHUB-725)[marko-p][googlecompute]AddedsetMachineTypemethodtoallowforchangingsizesofinstances(GITHUB-721)[EricJohnson][googlecompute]allowbypassingimagesearchinstandardprojectlist(GITHUB-713)[MaxIllfelder]AddsupportforrequestingaMKStokenforaccessingtheremoteconsoleinVMwarevClouddriver(GITHUB-706)[JuanFontAlonso]AddsupportinVMwarevClouddriverforv5.
5API,withsnapshotsupport(GITHUB-658)[JuanFontAlonso]AddedsupportforaddingafamilytoanimageonGoogleComputeDriver(GITHUB-704)[MaxIllfelder]94Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1DeprecatedIBMSCE,HPHelion,OpSource,NinefoldandCloudFramesdrivers,removeddrivercodeandtests.
(GITHUB-701,LIBCLOUD-801)[AnthonyShaw]Introducederrormessages(libcloud.
compute.
deprecated)fordeprecateddrivers(GITHUB-701,LIBCLOUD-801)[AnthonyShaw]NewComputedrivers-BSNL,Indosat,Med-1,NTT-America,InternetSolutions(GITHUB-700)[AnthonyShaw]FixtosetdefaultsignatureversionforAWSSeoulregiontov4,removednon-supportedsize(hs1.
xlarge)(GITHUB-684)[GeunwooShin]Supportlteringbylocationinlist_nodesfordimensiondatacomputedriverxlackofpagingsupport(GITHUB-691)[JeffDunham]SupportforlteringbyIPv4,IPv6,network,networkdomain,VLANinDimensiondatadriver.
(GITHUB-694)[JeffDunham]AddedNode.
created_atwhich,onsupporteddrivers,containsthedatetimethenodewasrststarted.
(GITHUB-698)[AllardHoeve][RickvandeLoo]NewdriverforAliyunElasticComputeService.
(LIBCLOUD-802,GITHUB-712)[SamSong,HengWu]StorageAddedOutscalestoragedriver(GITHUB-730)[JavierM.
Mellid]ImprovementstoGoogleAuthforStorageandComputeandMIMEbugx(LIBCLOUD-800,GITHUB-689)[ScottCrunkleton]Implementget_container,get_objectandupload_object_via_streammethodsintheBack-blazeB2storagedriver.
Note:BackblazeAPIdoesn'tuploadstreaminguploadssowhenusingupload_object_via_streamwholeleisreadandbufferedinmemory.
(GITHUB-696)[Jayjshridha]NewdriverforAliyunOSSStorageService.
(LIBCLOUD-802,GITHUB-712)[SamSong]LoadbalancerNewdriverforAliyunSLBLoadbalancerService.
(LIBCLOUD-802,GITHUB-712)[SamSong]DNSAddedNearlyFreeSpeech.
net(NSFN)driver[KenDrayer](GITHUB-733)AddedLuaDNSdriver[OltjanoTerpollari](GITHUB-732)AddedNSOnedriver[OltjanoTerpollari](GITHUB-710)FixabugintheGoDaddydriver-makesurehostattributeontheconnectionclassiscorrectlysettothehostname.
[TomazMuraus]FixhandlingofMXrecordsintheGandidriver.
(GITHUB-718)[RyanLee]1.
4.
Other95ApacheLibcloudDocumentation,Release3.
3.
1BackupDimensionData-addedadditionaltesting,xedbugonclientresponsenaming,addedsupportforaddingbackupclientstoabackupenablednode.
(GITHUB-692,GITHUB-693,GITHUB-695)[JeffDunham]ChangeswithApacheLibcloud1.
0.
0-pre1GeneralIntroductionofcontainerbaseddriversforDocker,RktandContainer-as-a-serviceproviders(LIBCLOUD-781,GITHUB-666)[AnthonyShaw]Introduceanewlibcloud.
backupAPIforBackupasaServiceprojectsandproducts.
(GITHUB-621)[AnthonyShaw]AlsoretryfailedHTTP(s)requestsupontransient"readoperationtimedout"SSLerror.
(GITHUB-556,LIBCLOUD-728)[ScottKruger]Throwamoreuser-friendlyexceptionifaclientfailstoestablishSSL/TLSconnectionwithaserverbecauseofanunsupportedSSL/TLSversion.
(GITHUB-682)[TomazMuraus]ComputeAddap-northeast-2regiontoEC2driver(SouthKorea)(GITHUB-681)[AnthonyShaw]AddedAddedvolumetypetoEC2volumeextratoEC2driver.
(GITHUB-680)[GennadiyStas]AddLazyObjectclassthatprovideslazy-loading,seeGCELicenseforusage(LIBCLOUD-786,GITHUB-665)[ScottCrunkleton]Addedt2.
nanoinstancetypetoEC2Computedriver(GITHUB-663)[AnthonyShaw]SupportforpassingtheimageIDasastringinsteadofaninstanceofimagewhencreatingnodesinDimensionDatadriver.
(GITHUB-664)[AnthonyShaw]DNSAddsupportfor'healthchecks'inAuroraDNSdriver(GITHUB-672)[WidodenHollander]MakesurettlattributeiscorrectlyparsedandaddedtotheRecordextradictionary.
(GITHUB-675)[WidodenHollander]ImproveunittestsofAuroraDNSdriver(GITHUB-679)[WidodenHollander]ChangeswithApacheLibcloud0.
20.
1Compute[google]Allowforoldandnewstyleserviceaccountclientemailaddress(LIBCLOUD-785)[HoangPhan]96Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ChangeswithApacheLibcloud0.
20.
0GeneralAdded.
editorcongleforeasierediting(GITHUB-625)[MishaBrukman]FixabugwithLibcloudaccidentallysettingparamikorootloggerleveltoDEBUG(thisshouldonlyhappenifLIBCLOUD_DEBUGenvironmentvariableisprovided).
ReportedbyJohnBresnahan.
(LIBCLOUD-765)[TomazMuraus,JohnBresnahan]Simplytravisandtoxcong(.
travis.
yml,tox.
ini).
(GITHUB-608)[AnthonyMonthe]FixedPython2.
6unittesting(andGoogleCloudStoragetests)(GITHUB-648)[ScottCrunkleton]Compute[google]Allowforoldandnewstyleserviceaccountclientemailaddress(LIBCLOUD-785)[HoangPhan]MinorsecurityimprovementforstoringcachedGCEcredentials(LIBCLOUD-718)[SiimPder]RemovedDreamHostsComputeDriver,DreamHostsuserswillnowusetheOpenStackNodedriversinceDreamHostsareOpenStackAPIcompliant(GITHUB-655)[StephanoMaffulli]Addedadditionalkwargstothecreate_nodemethodforDimensionDatadriver,allowingtheusertospecifytheRAMandCPUupfront.
Addedaex_recongure_nodemethodandex_list_customer_imagesaswellasupdatingtheAPIto2.
1.
(LIBCLOUD-783,GITHUB-656)[AnthonyShaw]TheEC2InstanceTypeupdatedwithcorrectdisksizes(especiallythedisksizeforthem3instances),conversionerrorsbetweenGiBanM[i]B,diskcountwerethecause.
Addedinstancetypes-g2.
8xlargeandt2.
large.
(GITHUB-646)[PhilippHahn]Addupdatenode,updateVMwaretools,addstorage,changestoragesizeorspeed,removestoragetoDimensionDataDriver.
(LIBCLOUD-775,GITHUB-644)[AnthonyShaw]Include'service_name'supportin_parse_service_catalog_auth_v3forOpenstackDrivers(GITHUB-647)[SteveGregory]Outscaleinc&sasdriverupdate(GITHUB-645)[@LordShion]Addneweu-west-2&us-east-2regionstotheOUTSCALE_INC&OUTSCALE_SASdrivers.
[FilipeSilva/lordshion][googlecompute]addpricingdataupdatescript(GITHUB-464)[MishaBrukman]Fixabuginthelist_volumesmethodintheCloudStackdriversoitreturnsanemptylistifnovolumesarefound.
(GITHUB-617)[WidodenHollander]ReturnpropervolumestateforCloudStackvolumes.
(GITHUB-615,LIBCLOUD-764)[WidodenHollander]AddsupportformultipleregionsinAuroracomputedriver(GITHUB-623)[WidodenHollander]Fixvalueofnode.
extra['ip_addresses']nodeattributeintheCloudStackdriver.
(LIBCLOUD-767,GITHUB-627)[AtsushiSasaki]Makesurethatnode.
public_ipsattributeintheCloudStackdriverdoesn'tcontainduplicatedvalues.
.
(LIBCLOUD-766,GITHUB-626)[AtsushiSasaki]AllowusertowaitforaresourcetoreachadesiredstateintheDimensionDatadriverbyusingnewex_wait_for_statemethod.
(LIBCLOUD-707,GITHUB-631)[AnthonyShaw]AddedM4pricingandinstanceinformationtoEC2driver(GITHUB-634)[BenjaminZaitlen]1.
4.
Other97ApacheLibcloudDocumentation,Release3.
3.
1AddedC4instanceinformationtoEC2driver(GITHUB-638)[amitofs]AllowlocationofthedatacentertobesuppliedinProtBricksdriver(LIBCLOUD-771,GITHUB-635)[JoelReymont]ReduceredundantAPIcallsinCloudStackdriver(LIBCLOUD-590,GITHUB-641)[AtsushiSasaki]Addanadditionalargumenttolibcloud.
compute.
drivers.
GCENodeDriver.
create_nodetoallowforcreationofpreemptibleGCEinstances(GITHUB-643)[@blawney]GoogleStorageDrivercannowuseeitherourS3authenticationorotherGoogleCloudPlatformOAuth2authen-ticationmethods.
(GITHUB-633)[ScottCrunkleton]AllNodeState,StorageVolumeState,VolumeSnapshotStateandProviderattributesarenowstringsinsteadofintegers.
(GITHUB-624)[AllardHoeve]StorageLoadbalancerDNSRackSpacedriver-NewDNSdrivermethods:–ex_iterate_ptr_records–ex_get_ptr_record–ex_create_ptr_record–ex_update_ptr_record–ex_delete_ptr_recordThisshouldcoverallofthefunctionalityofferedbytheRackspaceDNSAPIinregardstoRDNS.
(LIBCLOUD-780,GITHUB-652)[GregHill]Updatecreate_recordintheWorldWideDNSdriversoitautomaticallyselectsaslotifoneisnotprovidedbytheuserviaextra['entry']argument.
(GITHUB-621)[AlejandroPereira]IntroduceGoDaddyDNSDriverwithexamplesanddocumentation.
(LIBCLOUD-772,GITHUB-640,LIBCLOUD-778)[AnthonyShaw]AddnewdriverforCloudFlareDNS(https://www.
cloudare.
com/dns/).
(GITHUB-637)[TomazMuraus]ChangeswithApacheLibcloud0.
19.
0GeneralUpdateRackspaceAUTH_URL(LIBCLOUD-738)[BrianCurtin]FixLIBCLOUD_DEBUGmodesoitworksonPython3.
x.
[TomazMuraus]FixLibcloudcodesoitdoesn'tthrowanexceptionifsimplejson=3.
2andonlyrequirebackports.
ssl_match_hostnamedependencyonPythonversions.
sh.
(LIBCLOUD-302)Reportedbyrotemon#libcloud.
[TomazMuraus]122Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ComputeImprovepublicandprivateIPaddresshandlinginOpenStack1.
1driver.
AssumeeveryIPaddresswhichdoesn'thavealabel"public"or"internet"isprivate.
(LIBCLOUD-297)[GrischaMeyer,TomazMuraus]AddnewdriverforDigitalOceanprovider-https://www.
digitalocean.
com/.
(LIBCLOUD-304)[TomazMuraus]FixaregressioninParamikoSSHClient.
runmethodwhichcausedthismethidtoonlyworkasexpectedifyoupassedanabsoluteorarelativepathtothescripttoit.
(LIBCLOUD-278)[TomazMuraus]DNSAllowusertospecify'priority'extraargumentwhencreatingaMXorSRVrecord.
[BrianJinwright,TomazMuraus]ChangeswithApacheLibcloud0.
12.
1GeneralDeprecateLazyListmethodofiterationoverlargepaginatedcollectionsanduseanew,moreefcientgeneratorbasedapproachwhichdoesn'trequiretheiteratortobepre-exhaustedandbufferingallofthevaluesinmemory.
Existinglist_*methodswhichpreviouslyusedLazyListclassarepreservingtheoldbehaviorandnewiterate_*methodswhichuseanewgeneratorbasedapproachhavebeenadded.
(LIBCLOUD-254)[MahendraM]ReplaceoldENUMstyleproviderconstantsandreplacethemwithastringversion.
Thischangeallowsuserstodynamicallyregisternewdriversusinganewset_drivermethod.
(LIBCLOUD-255)[MahendraM]AllowusertoexplicitlyspecifywhichCAleisusedforverifyingtheservercerticatebysetting'SSL_CERT_FILE'environmentvariable.
Note:Whenthisvariableisspecied,thespeciedpathistheonlyCAlewhichisusedtoverifyingtheservercerticate.
(LIBCLOUD-283)[TomazMuraus,ErinnLooney-Triggs]Addacommonmodule(libcloud.
common.
xmlrpc)forhandlingXML-RPCrequestsusingLibcloudhttplayer.
Alsorefactorexistingdriverswhichusexmlrpclibdirectly(VCL,Gandi,Softlayer)tousethismodule.
ThischangeallowsdriverstosupportLIBCLOUD_DEBUGandSSLcerticatevalidationfunctionality.
Previ-ouslytheyhavebypassedLibcloudhttplayersothisfunctionalitywasnotavailable.
(LIBCLOUD-288)[JohnCarr]ComputeFixstringinterpolationbugin__repr__methodsintheIBMSCEdriver.
(LIBCLOUD-242)[TomazMuraus]FixtestfailureswhichhappenedinPython3.
3dueto:-hashrandomization-changesinxml.
etreemodule-changesinxmlrpcmodule(LIBCLOUD-245)[TomazMuraus]ImprovementsandadditionsinvClouddriver:–Exposegenericquerymethod(ex_query)–ProvidefunctionalitytogetandsetcontrolaccessforvApps.
ThiswaycreatedvAppscanbesharedbetweenusers/groupsoreveryone.
(LIBCLOUD-251)[MichalGalet]1.
4.
Other123ApacheLibcloudDocumentation,Release3.
3.
1UpdateEC2pricingdatatoreectnew,lowerprices-http://aws.
typepad.
com/aws/2012/10/new-ec2-second-generation-standard-instances-and-price-reductions-1.
html[TomazMuraus]UpdateEC2instancesizetoreectnewm3instancetypes.
Alsorefactorthecodetomakeiteasiertomaintain.
[TomazMuraus]AddanewdriverforHostVirtual(http://www.
vr.
org)provider.
(LIBCLOUD-249)[DineshBhoopathy]Fixabugwhereanumericinsteadofastringvaluewasusedforthecontent-lengthheaderinVClouddriver.
(LIBCLOUD-256)[BrianDeGeeter,TomazMuraus]AddanewdriverfornewAsiaPacic(Sydney)EC2region.
[TomazMuraus]AddsupportformanagingsecuritygroupstotheOpenStackdriver.
Thispatchaddsthefollowingexten-sionmethods:-ex_list_security_groups,ex_get_node_security_groupsmethods-ex_create_security_group,ex_delete_security_group-ex_create_security_group_rule,ex_delete_security_group_rule(LIBCLOUD-253)[L.
Schaub]ModifyElasticStackdriverclasstopass'vncauto'insteadof'vnc:ipauto'argumenttotheAPIwhencreatingaserver.
Itlookslike'vnc:ip'hasbeenreplacedwith'vnc'.
[RickCopeland,TomazMuraus]AddnewEC2instancetype-HighStorageEightExtraLargeInstance(hs1.
8xlarge).
[TomazMuraus]Map'shutting-down'nodestateinEC2drivertoUNKNOWN.
PreviouslyitwasmappedtoTERMINATED.
(LIBCLOUD-280)Note:Thischangeisbackwardincompatiblewhichmeansyouneedtoupdateyourcodeifyourelyontheoldbehavior.
[TomazMuraus,MarcinKuzminski]Change_wait_until_runningmethodsoitsupportswaitingonmultiplenodesandmakeitpublic(wait_until_running).
(LIBCLOUD-274)[NickBailey]AddnewEC2instancetype-HighMemoryClusterEightExtraLarge.
(cr1.
8xlarge).
[TomazMuraus]AddnewdriverforAbiquoprovider-http://www.
abiquo.
com(LIBCLOUD-250).
[JaumeDevesa]Allowusertopass'ex_blockdevicemappings'kwargtotheEC2driver'create_node'method.
(LIBCLOUD-282)[JoeMiller,TomazMuraus]ImproveerrorhandlingintheBrightboxdriver.
[TomazMuraus]FixtheScriptDeploymentsteptoworkcorrectlyifuserprovidesarelativepathforthescriptargument.
(LIBCLOUD-278)[JaumeDevesa]FixSoftlayerdriverandmakesureallthecodeisuptodateandworkswiththelatestversionoftheactualSoftlayerdeployment(v3).
(LIBCLOUD-287)[KevinMcDonald]UpdateEC2driver,m3instancetypesarenowavailableinalltheregionsexceptBrazil.
Alsoupdatepricingtoreectnew(lower)prices.
[TomazMuraus]MinorimprovementsintheHostVirtualdriverandaddnewex_get_nodeandex_build_nodeextensionmethod.
(LIBCLOUD-249)[DineshBhoopathy]Addex_destroy_imagemethodtoIBMSCEdriver.
(LIBCLOUD-291)[PerryZou]AddthefollowingnewregionstotheElasticHostsdriver:sjc-c,syd-v,hkg-e.
(LIBCLOUD-293)[TomazMuraus]Fixcreate_nodeinOpenStackdrivertoworkcorrectlyif'adminPass'attributeisnotpresentintheresponse.
[GavinMcCance,TomazMuraus]Allowuserstolterimagesreturnedbythelist_imagesmethodintheEC2driverbyprovidingex_image_idsargument.
(LIBCLOUD-294)[ChrisPsaltis,JosephHall]AddsupportforOpenNebula3.
8.
(LIBCLOUD-295)[GuillaumeZITTA]124Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Addmissing'deletd'->terminatedmappingtoOpenStackdriver.
(LIBCLOUD-276)[JayyVis]Fixcreate_nodeinOpenStackdrivertoworkcorrectlyif'adminPass'attributeisnotpresentintheresponse.
(LIBCLOUD-292)[GavinMcCance,TomazMuraus]StorageAddanewlocalstoragedriver.
(LIBCLOUD-252,LIBCLOUD-258,LIBCLOUD-265,LIBCLOUD-273)[Ma-hendraM]FixabugwhichcausedtheconnectiontonotbeclosedwhenusingPython2.
6andcallingget_objectonanobjectwhichdoesn'texistintheS3driver.
(LIBCLOUD-257)[JohnCarr]Addanewgeneratorbasedmethodforlisting/iteratingoverthecontainers(iterate_containers).
(LIBCLOUD-261)[MahendraM]Addex_purge_object_from_cdnmethodtotheCloudFilesdriver.
(LIBCLOUD-267)[TomazMuraus]SupportformultipartuploadsandotherimprovementsintheS3driversoitcanmoreeasilybere-usedwithotherimplementations(e.
g.
GoogleStorage,etc.
).
Alsodefaulttoamultipartuploadwhenusingupload_object_via_stream.
Thismethodsismoreefcientcomparedtooldapproachbecauseitonlyrequiresbufferingasinglemultipartchunk(5MB)inmemory.
(LIBCLOUD-269)[MahendraM]AddnewdriverforWindowsAzureStoragewithsupportforblockandpageblobs.
(LIBCLOUD-80)[MahendraM]DNSUpdate'iftype'checksintheupdate_recordmethodstobehavecorrectlyifuserspassesinRecordType.
Awithavalueof0-iftypeisnotNone.
(LIBCLOUD-247)[TomazMuraus]NewdriverforHostVirtualprovider(www.
vr.
org).
(LIBCLOUD-249)[DineshBhoopathy]FinishAmazonRoute53driver.
(LIBCLOUD-132)[JohnCarr]AddnewdriverforGandiprovider(https://www.
gandi.
net).
(LIBCLOUD-281)[JohnCarr]Load-BalancerAddnewdriverforAWSElasticLoadBalancingservice.
(LIBCLOUD-169)[JohnCarr]ChangeswithApacheLibcloud0.
11.
4GeneralFixsomeoftestsfailureswhichhappenedinPython3.
3duetorandomizeddictionaryordering.
(LIBCLOUD-245)[TomazMuraus]ComputeFixabugwhereanumericinsteadofastringvaluewasusedforthecontent-lengthheaderinVClouddriver.
(LIBCLOUD-256)[BrianDeGeeter,TomazMuraus]1.
4.
Other125ApacheLibcloudDocumentation,Release3.
3.
1StorageDon'tignoreex_force_service_regionargumentintheCloudFilesdriver.
(LIBCLOUD-260)[DanDiSpaltro]FixabugwhichcausedtheconnectiontonotbeclosedwhenusingPython2.
6andcallingget_objectonanobjectwhichdoesn'texistintheS3driver.
(LIBCLOUD-257)[JohnCarr]DNSUpdate'iftype'checksintheupdate_recordmethodstobehavecorrectlyifuserspassesinRecordType.
Awithavalueof0-iftypeisnotNone.
(LIBCLOUD-247)[TomazMuraus]ChangeswithApacheLibcloud0.
11.
3StorageInclude'last_modied'and'content_type'attributeintheObject'extra'dictionarywhenretrievingobjectusingget_objectintheS3driver.
Alsomodify'meta_data'dictionarytoincludealltheheadersprexedwith'x-amz-meta-'.
[TomazMuraus]ChangeswithApacheLibcloud0.
11.
2GeneralFixabugwiththeLibcloudSSLvericationcode.
Codewastoostrictanddidn'tallow"-"characterinthesub-domainwhenusingawildcardcerticate.
Note:ThisisNOTasecurityvulnerability.
(LIBCLOUD-244)[TomazMuraus]ComputeAddnewRackspaceNovadriverforChicago(ORD)location(LIBCLOUD-234)[BrianMcDaniel]AddcapacityinformationtoVdcobjectsandimplementpoweroperations.
(LIBCLOUD-239)[MichalGalet]Allowusertopass'timeout'argumenttothe'deploy_node'method.
[TomazMuraus]Addex_list_security_groups,ex_authorize_security_groupandex_describe_all_keypairsmethodstotheEC2driver.
(LIBCLOUD-241,LIBCLOUD-243)[NickBailey]AddnewmethodsformanagingstoragevolumesandotherextenstionmethodstotheIBMSCEdriver.
(LIBCLOUD-242)[SengorKusturica]StorageAddthefollowingnewmethodstotheCloudFilesdriver:ex_set_account_metadata_temp_url_key,ex_get_object_temp_url.
(GITHUB-72)[ShawnSmith]126Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Load-balancerAdd'balancer'attributetotheMemberinstance.
ThisattributereferstotheLoadBalancerinstancethismemberbelongsto.
[TomazMuraus]ChangeswithApacheLibcloud0.
11.
1GeneralFixhostnamevalidationintheSSLvericationcode(CVE-2012-3446).
ReportedbyresearchersfromtheUniversityofTexasatAustin(MartinGeorgiev,SumanJanaandVitalyShmatikov).
ChangeswithApacheLibcloud0.
11.
0ComputeAddatimeoutof10secondstoOpenStackAuthConnectionclass.
(LIBCLOUD-199)[ChrisGilmer]Addtime.
sleep(wait_period)to_ssh_client_connecttopreventbusyloopswhenweimmediatelycan'tconnecttoaserver.
(LIBCLOUD-197)[JayDoane]FixabugwithPython3supportinthefollowingdrivers-IBMSCE,-CloudStack-CloudSigma-OpenNebula-VpsNet-EC2-ElasticStack-vCloud-OpSource-Slicehost-Joyent(LIBCLOUD-204)[SengorKusturica,HutsonBetts,TomazMuraus]MakeCloudStackdrivermorerobustandmakeitworkiflist_images()callreturnsnoimages.
(LIBCLOUD-202)[GabrielReid]Addforce_ipv4argumentto_wait_until_runninganddefaultittoTrue.
ThiswillmakeLibcloudignoreIPv6addresseswhenusingdeploy_node.
(LIBCLOUD-200)[JayDoane,TomazMuraus]IncludeerrortextifaCloudStackasyncjobreturnsanerrorcode.
(LIBCLOUD-207)[GabrielReid]AddextenstionmethodsforblockstoragevolumemanagementtotheCloudStackdriver.
(LIBCLOUD-208)[GabrielReid]NewdriverforKTUCloud(http://home.
ucloud.
olleh.
com/main.
kt)basedontheCloudStackdriver.
[DaeMyungKang]AddastandardAPIandmethodsformanagingstoragevolumestotheEC2andCloudStackdrivers.
BaseAPIconsistentofthefollowingmethods:create_volume,destroy_volume,attach_volume,detach_volume.
(LIBCLOUD-213)[GabrielReid]Changeex_describe_tags,ex_create_tagsandex_delete_tagsmethodssignatureintheEC2driver.
Argumentisnowcalledresource(previouslyitwascallednode).
ThismethodsworkwithbothNodeandStorageVolumeobjects.
(LIBCLOUD-213)[GabrielReid,TomazMuraus]AddRackspaceNovaLondondriver.
[ChrisGilmer]Fixabug-Ifuserdoesn'tpassin'network_id'argumenttothecreate_nodemethodintheCloudStackdriver,don'texplicitlydeneit.
(LIBCLOUD-219)[BrunoMahé,TomazMuraus]ModifyEC2drivertoalsoreturncc2.
8xlargeclustercomputeinstanceintheeu-west-1region.
[TomazMuraus]Add'auth_user_variable'totheOpenStackAuthConnectionclass.
[MarkEverett]FixabugwithrepeatedURLsinsomerequeststhevClouddriver.
(LIBCLOUD-222)[MichalGalet]1.
4.
Other127ApacheLibcloudDocumentation,Release3.
3.
1NewGridspotdriverwithbasiclistanddestroyfunctionality.
(LIBCLOUD-223)[AmirElaguizy]AddmethodsformanagingstoragevolumestotheGandidriver.
(LIBCLOUD-225)[AymericBarantal]DNSAddsupportforGEORecordTypetoZerigodriver.
(LIBCLOUD-203)[GaryWilson]FixabugwithPython3supportinthefollowingdrivers(LIBCLOUD-204)-Zerigo[TomazMuraus]AddsupportforURLRecordTypetoZerigodriver.
(LIBCLOUD-209)[BojanMihelac]Properlyhandlerecordcreationwhenuserdoesn'tproviderarecordnameandwantstocreatearecordfortheactualdomain.
ReportedbyMattPerry(LIBCLOUD-224)[TomazMuraus]StorageFixabugwithPython3supportinthefollowingdrivers-Atmos-GoogleStorage-AmazonS3(LIBCLOUD-204)[TomazMuraus]FixabugintheCloudFilesdriverwhichpreventedittoworkwithaccountswhichuseanonORDendpoint.
(LIBCLOUD-205)[GeoffGreer]Fixabugintheenable_container_cdnmethod.
(LIBCLOUD-206)[GeoffGreer]AllowusertospecifycontainerCDNTTLwhencallingcontainer.
enable_cd()usingex_ttlkeywordargumentintheCloudFilesdriver.
[TomazMuraus]Addex_enable_static_websiteandex_set_error_pagemethodtotheCloudFilesdriver.
[TomazMuraus]Propagatekwargspassedtocontainer.
download_object()todriver.
download_object().
(LIBCLOUD-227)[BennoRice]FixabugwithnotescapingcontainerandobjectnameintheAtmosdriver.
[RussellKeith-Magee,BennoRice]Fixupload_object_via_streammethodintheAtmosdriver.
(LIBCLOUD-228)[BennoRice]Fixabugwithuploadingzero-sizedlesintheOpenStackSwift/CloudFilesdriver.
[TomazMuraus]Fixabugwithcontent_typeandencodingofobjectandpathnamesintheAtmosdriver.
[RussellKeith-Magee]OtherUnifydocstringsformattinginthecomputedrivers.
(LIBCLOUD-229)[IlgizIslamgulov]ChangeswithApacheLibcloud0.
10.
1GeneralAddtimeoutattributetobase'Connection'classandpassittotheconnectionclassconstructorifPythonversionisnot2.
5.
[ChrisGilmer]128Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ComputeUpdateIBMSBCdriversoitworkswithIBMSmartCloudEnterprise.
(LIBCLOUD-195)[SengorKusturica]Addex_register_isomethodtotheCloudStackdriver.
(LIBCLOUD-196)[DaemianMack]AllowusertospecifywhichIPtousewhencallingdeploy_node.
(defaultsto'public_ips').
PreviouslyitonlyworkedwithpublicIP,nowusercanpass'private_ips'asanargumentandSSHclientwilltrytoconnecttothenoderstprivateIPaddress.
[JayDoane]FixCloudSigmaLvsNodeDriverconnectionClsbug.
[JerryChen]Add'ex_keyname'argumenttothecreate_nodemethodintheOpenStackdriver.
(LIBCLOUD-177)[JayDoane]Fixaproblemindeploy_node-makeitworkwithproviderswhichdon'tinstantlyreturncreatednodeinthelist_noderesponse.
Alsoadd__str__and__repr__methodtoDeploymentErrorsotheerrormessageismoreuseful.
(LIBCLOUD-176)[JoukeWaleson,TomazMuraus]Add'ssh_key'featuretoBrigthboxdriver.
Thiswayitworkswithdeploy_node.
(LIBCLOUD-179)[NeilWilson]AddJoyentcomputedriver.
[TomazMuraus]Storeauthtokenexpiretimesontheconnectionclassintheattributecalled'auth_token_expires'.
(LIBCLOUD-178)[ChrisGilmer,BradMorgan]AddnewdriverforVCLcloud(http://www.
educause.
edu/blog/hes8/CloudComputingandtheVirtualCom/167931)(LIBCLOUD-180)[JasonGionta,TomazMuraus]ImproveandaddnewfeaturestoBrightboxdriver–Updatexturestorepresentactualapioutput–Updatecomputeteststo100%coverage–Adduserdataandservergroupextensionstocreate_node–Addipv6supporttopubliciplist–Improveinlinedocumentation–AddlotsofapioutputinformationtoNodeandImage'extra'attributes–AllowvariableAPIversions(api_versionargument)–Allowreversednsupdatesforcloudipextensions(LIBCLOUD-184)[NeilWilson,TomazMuraus]Addex_userdataargumenttotheOpenStack1.
1driver.
(LIBCLOUD-185)[JayDoane]ModifyVmwarevClouddriverandimplementnewfeaturesforthevCloudversion1.
5.
(LIBCLOUD-183)[MichalGalet,SengorKusturica]AllowusertopassmodeargumenttoSSHClient.
putmethodanddefaultitto'w'.
(LIBCLOUD-188)[JayDoane]ModifySSHKeyDeploymentsteptouseappendmodesoitdoesn'toverwriteexistingentriesin.
ssh/authorized_keys.
(LIBCLOUD-187)[JayDoane]ModifyParamikoSSHClienttoconnecttotheSSHagentandautomaticallylookforprivatekeysin~/.
sshifthe'auth'and'ssh_key'argumentisnotspeciedwhencallingdeploy_node.
(LIBCLOUD-182)[TomazMuraus]Addex_rescueandex_unrescuemethodtoOpenStack1.
1driver.
(LIBCLOUD-193)[ShawnSmith]1.
4.
Other129ApacheLibcloudDocumentation,Release3.
3.
1Include'password'inthenodeextradictionarywhencallingdeploy_nodeifthepasswordauthisused.
[JuanCarlosMoreno]AddFileDeploymentclasstolibcloud.
compute.
deploymentmodule.
Thiscanbeusedasareplacementforex_lesargumentiftheprovidersupportsdeploymentfunctionality.
(LIBCLOUD-190)[JayDoane]StorageLargeobjectuploadsupportforCloudFilesdriverAddCLOUDFILES_SWIFTdrivertoconnecttoOpenStackSwift[DmitryRusskikh,RomanBogorodskiy]Load-balancerDon'tinclude'body_regex'attributeintheRackspacedriverbodyifbody_regexisNoneoremptystring.
(LIBCLOUD-186)[BillWoodward]Don'tsplitLoadbalancerIPaddressesintopublicandprivatelist.
Includealltheaddressesinthe'virtualIps'variableintheextradictionary(Rackspacedriver).
(LIBCLOUD-191)[AdamPickeral]ChangeswithApacheLibcloud0.
9.
1GeneralMakeparsingoftheAuthAPIresponsesintheOpenStackdriversmoreexibleandextensible.
Now,everyconnectionclassthatinheritsfromtheopenstackbaseconnectionmustimplementget_endpoint(),who'sjobistoreturnthecorrectendpointoutoftheservicecatalog.
Note:Theopenstack.
pybasedrivernolongerworksbydefaultwithRackspacenova.
Thedefaultendpointparsedfromtheservicecatalogisthedefaultcomputeendpointfordevstack.
(LIBCLOUD-151)[BradMorgan]Allowusertopassex_tenant_namekeywordargumenttotheOpenStacknodedriverclass.
ThisscopesalltheendpointsreturnedbytheAuthAPIendpointtotheprovidedtenant.
(LIBCLOUD-172)[JamesE.
Blair]AllowusertospecifyOpenStackservicecatalogparameters(servicetype,nameandregion).
ThiswaybaseOpenStackdrivercanbeusedwithdifferentproviderswithoutneedingtosubclass.
(LIBCLOUD-173)[JamesE.
Blair]FixabugwithhandlingcompressedresponsesintheLinodedriver.
(LIBCLOUD-158)[BenAgricola]ComputeAddnewRackspaceNovaBetaandRackspaveNovaDfwdriverbasedontheOpenStack.
(LIBCLOUD-151)[BradMorgan]Include'created'and'updated'attributeintheOpenStack1.
1driver.
(LIBCLOUD-155)[ChrisGilmer]Include'minRam'and'minDisk'attributeintheOpenStack1.
1driverNodeextradictionary.
(LIBCLOUD-163)[ChrisGilmer]AllowuserstousealistoftuplesforthequerystringparametersinsidetheOpenStackconnectionclasses.
Thiswaysamekeycanbespeciedmultipletimes(LIBCLOUD-153)[DaveKing]Allowusertopass'max_tries'keywordargumenttodeploy_nodemethod.
[TomazMuraus]130Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Includeoriginalexceptionerrormessagewhenre-throwinganexceptioninside_run_deployment_scriptmethod.
[TomazMuraus]AddsupportforElasticHostsnewUnitedStates(LosAngeles)andCanada(Toronto)locations.
(GITHUB-53)[JaimeIrurzun]AddserverIdattributetotheNodeImageobjectextradictionaryintheOpenStackdriver.
[MarkEverett]AddnewEC2instancetype-m1.
medium.
[TomazMuraus]Allowusertore-useauthtokensandpass'ex_force_auth_token'keywordargumenttotheOpenStackdriverconstructor.
(LIBCLOUD-164)[DaveKing]Addnewexperimentallibvirtdriver.
[TomazMuraus]ProperlyhandleOpenStackproviderswhichreturnpublicIPaddressesunderthe'internet'keyintheaddressesdictionary.
[TomazMuraus]Updatecreate_nodeinLinodedriverandmakeitreturnaNodeobjectinsteadofalist.
ReportedbyJoukeWaleson.
(LIBCLOUD-175)[TomazMuraus]StorageDon'tlowercasespecialheadernamesintheAmazonS3storagedriver.
(LIBCLOUD-149)[TomazMuraus]Load-balancerAllowusertospecifyaconditionandweightwhenaddingamemberintheRackspacedriver.
[AdamPickeral]Addanextensionmethod(ex_balancer_attach_members)forattachingmultiplememberstoaloadbalancerintheRackspacedriver.
(LIBCLOUD-152)[AdamPickeral]Addex_creaate_balancermethodtotheRackspacedriverandallowusertopass'vip'argumenttoit.
(LIBCLOUD-166)[AdamPickeral]UpdateRackspacedrivertosupportAuth2.
0.
(LIBCLOUD-165)[DaveKing]Addnewex_create_balancer_access_ruleandex_create_balancer_access_rule_no_pollmethodtotheRackspacedriver.
(LIBCLOUD-170)[DaveKing]DNSUpdateRackspacedrivertosupportAuth2.
0.
(LIBCLOUD-165)[DaveKing]ChangeswithApacheLibcloud0.
8.
0GeneralAdd'request_kwargs'argumenttotheget_poll_request_kwargsmethod.
Thisargumentcontainskwargswhichwerepreviouslyusedtoinitiatethepollrequest.
[MarkEverett]Addsupportforhandlingcompressedresponses(deate,gzip).
Alsosend"Accept-Encoding""gzip,deate"headerwithalltherequests.
[TomazMuraus]Fixdebugmodule(LIBCLOUD_DEBUGenvvariable)soitworkswithPython3[TomazMuraus]1.
4.
Other131ApacheLibcloudDocumentation,Release3.
3.
1ComputeAddedsupportforretrievingOpenNebulav3.
2instancetypes,OpenNebulav3.
0networkPublicattributesup-port,andadditionalcodecoveragetests.
[HutsonBetts]Addimplementationforex_save_imagemethodtotheOpenStack1.
1driver.
[ShawnSmith]AddsupportforAmazonnewSouthAmerica(SaoPaulo)location.
[TomazMuraus]FixabuginOpenStackdriverwhen2.
0_apikeyor2.
0_password'auth_version'isused.
[TomazMuraus]CurrentOpenNebulaOCCIimplementationdoesnotsupportaproperrestartmethod.
Ratheritsuspendsandresumes.
Therefore,restart_nodehasbeenremovedfromtheOpenNebuladriver.
[HutsonBetts]Enableex_delete_imagemethodintheOpenStack1.
1driver.
[ShawnSmith]ReturnNodeImageinstanceinOpenStack1.
1driverex_save_imagemethod(LIBCLOUD-138)[ShawnSmith]Enablereboot_nodemethodintheOpenNebula3.
2driver.
[HutsonBetts]Fixapublic_ipsNodevariableassignmentintheGandi.
netdriver.
[AymericBarantal]UpdatedthelistofnodestatesforOpenNebuladrivers.
(LIBCLOUD-148)[HutsonBetts]StoragePropagateextrakeywordargumentspassedtotheRackspacedriverconnectionclass.
[DaveKing]Load-balancerAdd'extra'attributetotheLoadBalancerobjectandretrieveallthevirtualIPaddressesintheRackspacedriver.
[DaveKing]Addlist_supported_algorithms()methodtothebaseLoadBalancerclass.
Thismethodreturnsalistofsupportedalgorithmsbytheprovider.
[DaveKing]UpdateRackspacedriver:–Addtwonewsupportedalgorithms:WEIGHTED_ROUND_ROBIN,WEIGHTED_LEAST_CONNECTIONS–Addex_list_algorithm_namesmethod–Addex_get_balancer_error_pagemethod–Addex_balancer_access_listmethod–PopulateLoadBalancerextradictionarywithmoreattributes–Addsupportforhealthmonitorsandconnectionthrottling–Addmorebalancerstates–ex_list_protocols_with_default_ports[DaveKing]PropagateextrakeywordargumentspassedtotheRackspacedriverconnectionclass.
[DaveKing]Add'extra'attributetotheMemberobjectandpopulateitintheRackspacedriver.
[MarkEverett]AddsstatustotheMemberobjectandconditionsan'enum'(Rackspacedriver).
[MarkEverett]Addupdate_balancermethodtothebaseLoadBalancerclass.
[MarkEverett]132Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Addupdate_balancermethodtotheRackspacedriver.
[MarkEverett]AddcreatedandupdatedattributetotheLoadBalancerextradictionaryintheRackspacedriver.
[MarkEverett]FixprotocolnamemapingintheRackspacedriver.
[BillWoodward]ChangeswithApacheLibcloud0.
7.
1GeneralFixaminorbugindebugmode(LIBCLOUD_DEBUG=/dev/stderr)whichhasbeenintroducedwhenaddingPython3compatibilitylayer.
[PaulQuerna]UpdateOpenStackAuthAPIendpointpaths.
[PaulQuerna]ChangeswithApacheLibcloud0.
7.
0GeneralAddsupportforPython3.
x.
[TomazMuraus]Removeolddeprecatedpaths.
[TomazMuraus]ComputeUpdateCloudSigmaZurichAPIendpointaddress.
[TomazMuraus]AddnewUSLasVegasendpointtoCloudSigmadriver(types.
CLOUDSIGMA_US)[TomazMuraus]Allowusertospecifydrivetype(hdd,ssd)whencreatingaCloudSigmaserver.
Note'ssd'drive_typedoesn'tworkwiththeAPIyet.
[TomazMuraus]UpdateOpenStack1.
1drivertocomplywiththeAPIspecs.
Needtomakeanothercalltoretrievenodenameandipaddresseswhencreatinganode,becausetherstcallonlyreturnsanidanthepassword.
(GITHUB-40)[DaveKing]Addex_node_idsargumenttotheEC2driverlist_nodesmethod.
(GITHUB-39)[SuvishVt]IfOpenStackAuth2.
0APIisused,alsoparseouttenantidandnameandsaveitontheconnectionclass(conn.
tenant['id'],conn.
tenant['name']).
[TomazMuraus]Addnew"ClusterComputeEightExtraLarge"sizetotheAmazonEC2driver.
[TomazMuraus]AddthefollowingextensionmethodstotheEC2computedriver:ex_describe_all_addresses,ex_associate_addresses,ex_start_node,ex_stop_node.
[SuvishVt]Changepublic_ipandprivate_ipattributeontheNodeobjecttothepublic_ipsandprivate_ipssincebothoftheobjectsarealwaysalist.
Note:Forbackwardcompatibilityyoucanstillaccesspublic_ipandprivate_ipattributes,butthiswillbere-movedinthenextrelease.
[TomazMuraus]FixaninconsistencyinIBMSBCdriverandmakesurepublic_ipsandprivate_ipsattributesarealist.
[TomazMuraus]FixaninconsistencyinOpSourcedriverandmakesurepublic_ipsisanemptylist([]),not'unknown'[TomazMuraus]1.
4.
Other133ApacheLibcloudDocumentation,Release3.
3.
1UpdatedsupportforOpenNebula.
orgv1.
4,v2.
x,andv3.
xAPIsandincludedadditionalcomputetestsvalidatingfunctionality.
(LIBCLOUD-121)[HutsonBetts]Load-balancerAddex_member_addressargumenttotheRackspacedriverlist_balancersmethod.
Ifthisargumentisprovided,onlyloadbalancerswhichhaveamemberwiththeprovidedIPaddressattachedarereturned.
[TomazMuraus]ChangeswithApacheLibcloud0.
6.
2GeneralFixabuginPollingConnectionclass-actuallyuseanddon'tignorethepoll_interval[TomazMuraus]ComputeAddsupportforAuth2.
0API(keystone)totheOpenStackAuthconnectionclass.
[BradMorgan]Addlist_locationsmethodtotheOpenStackdriverandxsomeinconsistenciesintheOpenStackdriverexten-sionmethodsignatures.
[BradMorgan]UpdateAmazonEC2driverandpricingdatatosupportanewregion-USWest2(Oregon)[TomazMuraus]Expose'CLOUDSTACK'provider.
ThisdrivercanbeusedwithanarbitraryCloudStackinstallation.
[TomazMuraus]StorageUpdateAmazonS3drivertosupportanewregion-USWest2(Oregon)[TomazMuraus]DNSIncreasethedefaultpollintervalintheRackspacedriverto2.
5seconds.
[TomazMuraus]FixabuginRackspaceCloudDNSdriverandmakesuretothrowanexceptionifanunexpectedstatuscodeisreturned.
Reportedby"jeblair".
[TomazMuraus]ChangeswithApacheLibcloud0.
6.
1GeneralModifyParamikoSSHClient.
connectsoitsupportsauthenticationusingakeyle,(LIBCLOUD-116)[JayDoane]UsermustnowexplicitlyspecifyapathwhenusingLIBCLOUD_DEBUGenvironmentvariable.
(LIBCLOUD-95)[daveb,TomazMuraus]AddnewXmlResponseandJsonResponsebaseclassandmodifyallthedriver-specicresponseclassestoinheritfromoneofthosetwoclasseswhereapplicable.
[CaioRomo]Addnew'PollingConnection'class.
Thisclasscanworkwith'async'APIs.
ItsendsandaninitialrequestandthenperiodicallypolltheAPIuntilthejobhascompletedoratimeouthasbeenreached.
[TomazMuraus]134Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ComputeAdd24GBsizetotheGoGriddriver[RomanBogorodskiy]FixAPIendpointURLintheSoftlayerdriver[TomazMuraus]AddsupportforOpenNebula3.
0API(LIBCLOUD-120)[HutsonBetts]AddmoreattributestotheextradictionaryintheEC2driver.
(GITHUB-31)[JuanCarlosMoreno]FixIPaddressassignmentintheEC2driver.
Don'tinclude"None"inthepublic_ipandprivate_ipNodelistattribute.
[TomazMuraus]Makedeploy_nodefunctionalitymorerobustanddon'tstartdeploymentifnodepublic_ipattributeisanemptylist.
[TomazMuraus]SupportSSHkeyauthenticationwhenusingdeploy_node.
[RussellHaering,TomazMuraus]Enabledeploy_nodefunctionalityintheEC2driverusingSSHkeyauthentication[RussellHaering,TomazMuraus]EnableparamikolibrarydebugloglevelifLIBCLOUD_DEBUGisusedandparamikoisinstalled.
[TomazMuraus]FixtherequestsignaturegenerationinthebaseEC2computedriver.
Iftheendpointisusinganon-standardport(Eucalyptusbasedinstallations),appendittothehostnameusedtogeneratethesignature.
[SimonDelamare]Addnew"unavailable"statetotheBrightboxNodeDriverclass.
[TimFletcher]IncreaseaPollingConnectiontimeoutintheCloudStackconnectionandxthecontextdictionarycreationinthe_async_requestmethod.
[OlegSuharev]FixnetworksretrievalintheCloudStackdrivercreate_nodemethod.
Alsoonlypass'networkids'eldtotheAPIifthereareanynetworksavailable.
[OlegSuharev,TomazMuraus]Fixlist_nodesintheCloudStackdriver.
PrivateIPsaren'talwaysavailable.
[TomazMuraus]Load-baancerAddamissingargumenttothemethodcallinsideLoadBalancer.
attach_compute_nodeandDriver.
balancer_attach_compute_node.
[TimFletcher,TomazMuraus]Addmissingdestroy()methodtotheLoadBalancerclass.
[TomazMuraus]DNSNewdriversforRackspaceCloudDNS(USandUKregion)[TomazMuraus]Addlist_record_types()method.
Thismethodreturnsalistofrecordtypessupportedbytheprovider.
[TomazMuraus]ChangeswithApacheLibcloud0.
6.
0-beta1GeneralAllthedriverclassesnowinheritfromtheBaseDriverclass[TomazMuraus]Prefersimplejson(ifavailable)overjsonmodule.
(LIBCLOUD-112)[GeoffGreer]1.
4.
Other135ApacheLibcloudDocumentation,Release3.
3.
1Updatecomputedemoandchangethesyntaxoftestcredentialsstoredintest/secrets.
py-dist.
(LIBCLOUD-111)[MikeNerone]EnableSSLcerticatevericationbydefaultandthrowanexceptionifCAcerticatelescannotbefound.
Thiscanbeoverriddenbysettinglibcloud.
security.
VERIFY_SSL_CERT_STRICTtoFalse.
[TomazMuraus]ComputeSupportfor1.
1APIandmanyotherimprovementsintheOpenStackdriver;LIBCLOUD-83[MikeNerone,PaulQuerna,BradMorgan,TomazMuraus]AddsomeextramethodstotheGandi.
netdriver(LIBCLOUD-115)[AymericBarantal]Addex_delete_imagemethodtotheRackspacedriver.
(GITHUB-27)[DavidBusby]Linodedrivernowsupportsnew'Japan'location[JedSmith]RackspacedrivernowinheritsfromtheOpenStackoneinsteadofdoingitviceversa.
(LIBCLOUD-110)[MikeNerone]ProperlypopulateNodeImage"details"dictionaryintheRackspacecomputedriver.
(LIBCLOUD-107)[LucyMendel]FixabuginEucalyptusdriverex_describe_addressesmethod.
[TomazMuraus]AddthefollowingnewextenstionmethodstotheRackspacedriver:ex_resize,ex_conrm_resize,ex_revert_resize.
[TomazMuraus]AlsoallowusertopassinNodeobjecttosomeex_methodsintheRackspacecomputedriver.
[TomazMuraus]Throwanexceptionindeploy_nodeifparamikolibraryisnotavailable[TomazMuraus]Fixchmodargumentvaluewhichispassedtothesftpclient.
putmethod;GITHUB-17[JohnCarr]NewdriverforNinefold.
com.
(LIBCLOUD-98)[BennoRice]StorageNewdriverforGoogleStoragebasedonthev1.
0/legacyAPI[TomazMuraus]NewdriverforNinefold.
com.
(GITHUB-19)[BennoRice]FixabuginuploadinganobjectwithsomeversionsofPython2.
7wherehttpliblibrarydoesn'tautomaticallycallstr()ontheheadervalues.
[TomazMuraus]Allowuserstoupload(create)0-byteslarge(empty)objects[TomazMuraus]Load-balancerNewdriverforRackspaceUKlocation[TomazMuraus]NewdriverforNinefold.
com.
(LIBCLOUD-98)[BennoRice]DNSDriversforLinodeDNSandZerigoDNS[TomazMuraus]BrandnewDNSAPI!
[TomazMuraus]136Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ChangeswithApacheLibcloud0.
5.
2ComputeNewdriverforserverlove.
comandskalicloud.
com[TomazMuraus]FixnodenameandtaghandlingintheAmazonEC2driver[WiktorKolodziej]FixpricingandresponsehandlingintheOpenStackdriver[AndreyZhuchkov]Fixdeploy_node()methodandmakeitmorerobust[TomazMuraus]UserscannowpasslelikeobjectstoScriptDeploymentandSSHKeyDeploymentconstructor.
[TomazMuraus]Includenodetagswhencallinglist_nodes()intheAmazonEC2driver[TrevorPounds]ProperlyhandleresponseerrorsintheRackspacedriverandonlythrowInvalidCredsErrorifthereturnedstatuscodeis401[BradMorgan]Fixthecreate_nodemethodintheNimbusdriverandmakethe"ex_create_tag"methodano-op,becauseNim-busdoesn'tsupportcreatingtags.
[TomazMuraus]StorageFixhandlingofthecontainerswithalotofobjects.
NowaLazyListobjectisreturnedwhenusercallslist_container_objects()methodandthisobjecttransparentlyhandlespagination.
[DannyClark,WiktorKolodziej]ChangeswithApacheLibcloud0.
5.
0ExistingAPIsdirectlyonthelibcloud.
*modulehavebeendeprecatedandwillberemovedinversion0.
6.
0.
Mostmethodsweremovedtothelibcloud.
compute.
*module.
Addnewlibcloud.
loadbalancersAPI,withinitialsupportfor:–GoGridLoadBalancers–RackspaceLoadBalancers[RomanBogorodskiy]Addnewlibcloud.
storageAPI,withinitialsupportfor:–AmazonS3–RackspaceCloudFiles[TomazMuraus]Addnewlibcloud.
computedriversfor:–Bluebox[ChristianParedes]–Gandi.
net[AymericBarantal]–Nimbus[DavidLaBissoniere]–OpenStack[RomanBogorodskiy]–Opsource.
net[JoeMiller]Added"pricing"moduleandimprovedpricinghandling.
[TomazMuraus]1.
4.
Other137ApacheLibcloudDocumentation,Release3.
3.
1UpdatestotheGoGridcomputedriver:–UseAPIversion1.
0.
–Removesandboxag.
–Addex_list_ips()tolistIPaddressesassignedtotheaccount.
–Implementex_edit_imagemethodwhichallowschangingimageattributeslikename,descriptionandmakeimagepublicorprivate.
[RomanBogorodskiy]UpdatestotheAmazonEC2computedriver:–WhencreatingaNode,usethenameargumenttosetaTagwiththevalue.
[TomazMuraus]–Addextensionmethodformodifyingnodeattributesandchangingthenodesize.
[TomazMuraus]–AddsupportforthenewAmazonRegion(Tokyo).
[TomazMuraus]–Addedex_create_tagsandex_delete_tags.
[BrandonRhodes]–IncludenodeElasticIPaddressesinthenodepublic_ipattributefortheEC2nodes.
[TomazMuraus]–UseipAddressandprivateIpAddressattributefortheEC2nodepublicandprivateip.
[TomazMuraus]–Addex_describe_addressesmethodtotheEC2driver.
[TomazMuraus]UpdatestotheRackspaceCloudServerscomputedriver:–Addex_rebuild()andex_get_node_details()[AndrewKlochkov]–ExposeURIofaRackspacenodetothenodemetadata.
[PaulQuerna]MinorxestogetthelibraryandtestsworkingonPython2.
7andPyPy.
[TomazMuraus]ChangeswithApacheLibcloud0.
4.
2(ReleasedJanuary18,2011)FixEC2create_nodetobecomebackwardcompatibleforNodeLocation.
[TomazMuraus]UpdatecodeforcompatibilitywithCPython2.
5[JerryChen]Implementex_edit_nodemethodforGoGriddriverwhichallowschangingnodeattributeslikeamountofRAMordescription.
[RomanBogorodskiy]Addex_set_passwordandex_set_server_nametoRackspacedriver.
[PeterHerndon,PaulQuerna]AddHardandSoftrebootmethodstoRackspacedriver.
[PeterHerndon]EC2Driveravailabilityzones,viaex_list_availability_zones;list_locationsrewritetoincludeavailabilityzones[TomazMuraus]EC2DriverIdempotencycapabilityincreate_node;LIBCLOUD-69[DavidLaBissoniere]SSLCerticateNameVerication:–libcloud.
securitymodule–LibcloudHTTPSConnection,LibcloudHTTPConnection(alias)–Emitswarningwhennotverifying,orCAcertsnotfoundAppendORD1toavailableRackspacelocation,butkeepinthesamenodeasDFW1,becauseit'snotreadableorwriteablefromtheAPI.
[PersuggestionofGrigGheorghiu]ex_create_ip_group,ex_list_ip_groups,ex_delete_ip_group,ex_share_ip,ex_unshare_ip,ex_list_ip_addressesadditionstoRackspacedriver[AndrewKlochkov]138Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1NewdriverforCloudSigma.
[TomazMuraus]NewdriverforBrightboxCloud.
(LIBCLOUD-63)[TimFletcher]DeploymentcapabilitytoElasticHosts[TomazMuraus]Allowdeploy_nodetousenon-standardSSHusernameandport[TomazMuraus]AddedRackspaceUK(London)support[ChmouelBoudjnah]GoGriddriver:addsupportforlocations,i.
e.
listingoflocationsandcreationofanodeinspeciedlocation[RomanBogorodskiy]GoGridandRackspacedrivers:addex_save_image()extracalltoconvertrunningnodetoanimage[RomanBogorodskiy]GoGriddriver:addsupportforcreating'sandbox'serverandpopulateisSandboxaginnode'sextrainforma-tion.
[RomanBogorodskiy]AddImportKeyPairandDescribeKeyPairtoEC2.
(LIBCLOUD-62)[PhilipSchwartz]UpdateEC2driverandtestxturesfornewAPI.
[PhilipSchwartz]ChangeswithApacheLibcloud0.
4.
0[ReleasedOctober6,2010]AddcreatekeypairfunctionalitytoEC2Drivers.
(LIBCLOUD-57)[GrigGheorghiu]ImprovehandlingofGoGridaccountswithlimitedaccessAPIkeys.
[PaulQuerna]NewDriverforElasticHosts.
(LIBCLOUD-45)[TomazMuraus]UsemoreconsistentnameforGoGriddriverandusehttpPOSTmethodfor'unsafe'operations[RussellHaer-ing]ImplementpasswordhandlingandadddeploymentsupportforGoGridnodes.
[RomanBogorodskiy]FixbehaviorofGoGrid'screate_nodetowaitforaNodeID.
[RomanBogorodskiy]Addex_create_node_nowaittoGoGriddriverifyoudon'tneedtowaitforaNodeIDwhencreatinganode.
[RomanBogorodskiy]Removedlibcloud.
interfacesmodule.
[PaulQuerna]Removeddependencyonzope.
interfaces.
[PaulQuerna]RimuHostingmovedAPIendpointaddress.
[PaulQuerna]FixregressionanderrorinGoGriddriverforparsingnodeobjects.
[RomanBogorodskiy]AddedmoretestcasesforGoGriddriver.
(LIBCLOUD-34)[RomanBogorodskiy,JerryChen]FixparsingofSlicehostnodeswithmultiplePublicIPaddresses.
[PaulQuerna]Addexit_statustoScriptDeployment.
(LIBCLOUD-36)[PaulQuerna]Updatepricesforseveraldrivers.
[BradMorgan,PaulQuerna]UpdateLinodedrivertoreectnewplansizes.
[JedSmith]Changedefaultof'location'inLinodecreate_node.
(LIBCLOUD-41)[JedSmith,SteveSteiner]DocumenttheLinodedriver.
[JedSmith]Requestaprivate,LANIPaddressatLinodecreation.
[JedSmith]1.
4.
Other139ApacheLibcloudDocumentation,Release3.
3.
1ChangeswithApacheLibcloud0.
3.
1[ReleasedMay11,2010]UpdatestoApacheLicenseblockstocorrectlyreectstatusasanApacheProject.
FixNOTICEletouse2010copyrightdate.
Improveerrormessagesforwhenrunningthetestcaseswithoutrstsettingupasecrets.
pyChangeswithApacheLibcloud0.
3.
0[TaggedMay6,2010,notreleased]NewDriversfor:–Dreamhost–Eucalyptus–EnomalyECP–IBMDeveloperCloud–OpenNebula–SoftLayerAddednewdeploymentandbootstrapAPI.
ImprovedVoxeldriver.
AddedsupportforAmazonEC2AsiaPacic(Singapore)Region.
Improvedtestcoverageforalldrivers.
AddsupportformultiplesecuritygroupsinEC2.
FixedbuginRackspaceandRimuHostingwhenusingmultiplethreads.
ImproveddebuggingandloggingofHTTPrequests.
Improveddocumentationforallclassesandmethods.
ChangeswithApacheLibcloud0.
2.
0[TaggedFebruary2,2010]Firstpublicrelease.
1.
4.
2UpgradeNotesThispagedescribeshowtoupgradefromapreviousversiontoanewversionwhichcontainsbackwardincompatibleorsemi-incompatiblechangesandhowtopreservetheoldbehaviorwhenthisispossible.
Libcloud3.
3.
0libcloud.
pricing.
get_size_pricing()nowonlycachespricingdatainmemoryfortherequesteddrivers.
Thiswayweavoidunnecessaryoverheadofcachingdatainmemoryforallthedrivers.
Ifyouwanttoreverttotheoldbehavior(cachepricingdataforallthedriversinmemory),youcandothatbypassingcache_all=Trueargumenttothatfunctionasshownbelow:140Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1fromlibcloud.
pricingimportget_size_pricingprice=get_size_price("compute","bluebox",cache_all=True)Orbysettinglibcloud.
pricing.
CACHE_ALL_PRICING_DATAmodulelevelvariabletoTrue:importlibcloud.
pricinglibcloud.
pricing.
CACHE_ALL_PRICING_DATA=True#Yourcodehere#.
.
.
Passingcache_all=Truemightcomehandyinsituationswhereyouknowtheapplicationwillworkwithalotofdifferentdrivers-thiswayyoucanavoidmultiplediskreadswhenrequestingpricingdatafordifferentdrivers.
PacketdriverhasbeenrenamedtoEquinixMetal.
ProvidernamehaschangedfromProvider.
PACKETtoProvider.
EQUINIXMETAL,whileeverythingelseworksasbefore.
Before:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
PACKET)driver=cls('api_key')After:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
EQUINIXMETAL)driver=cls('api_key')Newlibcloud.
common.
base.
ALLOW_PATH_DOUBLE_SLASHESmodulelevelvariablehasbeenaddedwhichdefaultstoFalseforbackwardcompatibilityreasons.
WhensettoTrue,Libcloudcodewon'tperformanyURLpathsanitizationandwillallowURLpathswithdoubleslashes(e.
g.
/my-bucket//foo/1.
txt).
ThismaycomehandytotheuserswhohaveS3pathswhichcontainsdoubleslashesorsimilarandareupgradingfromLibcloudv2.
3.
0orolderwherenopathsanitizationwasperformed.
ExampleS3bucketlayoutwiththisoptiondisabled(default)andenabled.
Objectwiththefollowingname:/my-bucket/sub-directory/file.
txt#Disabledroot+--my-bucket/+--sub-directory/+--file.
txt#Enabledroot(continuesonnextpage)1.
4.
Other141ApacheLibcloudDocumentation,Release3.
3.
1(continuedfrompreviouspage)+--/+--my-bucket/+--sub-directory/+--file.
txtObjectwiththefollowingname:/my-bucket//directory1/file.
txt#Disabledroot+--my-bucket/+--directory1/+--file.
txt#Enabledroot+--/+--my-bucket/+--/+--directory1/+--file.
txtAsyoucanseefromtheexamplesabove,directorylayoutisnotthesamewiththisoptionenabledanddisabledsoyoushouldbecarefulwhenyouuseit.
Thischangeaffectsallthedriverswhichareusedwhenthatmodulelevelvariableisset.
Libcloud3.
2.
0Toaccommodateformorecomplexpricingschemes,pricingdataformatforAWSEC2insidelibcloud/data/pricing.
jsonlehaschanges.
Previously,itcontainedamappingof_->->andnowthepricingisinthefollowingformat:ec_{linux,windows}->->->.
Thisformatgivesusmoreexibilityformorecomplexpricingschemesandalsoallowsustostorepricesfornon-Linuxinstances.
Libcloud3.
0.
0ThisreleasedropssupportforPythonversionsolderthan3.
5.
0.
IfyoustillneedtouseLibcloudwithPython2.
7orPython3.
4youcandothatbyusingthelatestreleasewhichstillsupportedthosePythonversions(Libcloudv2.
8.
0).
ThisreleaseremovesVMwarevSpheredriverwhichreliedonoldandunmaintainedpyspherelibrarywhichdoesn'tsupportPython3.
ThisreleaseremovessupportforPageBlobobjectsfromtheAzureBlobsstoragedriver.
Theex_blob_typeandex_page_blob_sizeargumentshavebeenremovedfromtheupload_objectandupload_object_via_streammethods.
Theex_prefixkeywordargumentintheiterate_container_objectsandlist_container_objectsmethodsinallstoragedrivershasbeenrenamedtoprefixtoindicatethepromotionoftheargumenttothestandardstoragedriverAPI.
142Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Libcloud2.
8.
0deploy_node()methodintheGCEdriverhasbeenupdatedsoitcomplieswiththebasecomputeAPI.
Thismeansthatthemethodnowtakesthesameargumentasthebasedeploy_node()method(deployment,ssh_username,ssh_port,etc.
)plusallthekeywordargumentswhicharesupportedbythecreate_node()method.
group_namekeywordargumentinthecreate_node()methodintheAbiquodriverhasbeenrenamedtoex_group_nametocomplywiththeconventionfornamingnon-standardarguments(argumentswhicharenotpartofthestandardcomputeAPI).
Libcloud2.
7.
0AWSS3driverhasmovedfrom"driverclassperregion"modelto"singledriverclasswithregionconstructorargument"model.
Thismeansthisdrivernowfollowsthesameapproachasothermultiregiondrivers.
Before:fromlibcloud.
storage.
typesimportProviderfromlibcloud.
storage.
providersimportget_driverS3_EU_CENTRAL=get_driver(Provider.
S3_EU_CENTRAL)S3_EU_WEST_1=get_driver(Provider.
S3_EU_WEST)driver_eu_central=S3_EU_CENTRAL('apikey','apisecret')driver_eu_west_1=S3_EU_WEST_1('apikey','apisecret')After:fromlibcloud.
storage.
typesimportProviderfromlibcloud.
storage.
providersimportget_driverS3=get_driver(Provider.
S3)driver_eu_central=S3('apikey','apisecret',region='eu-central-1')driver_eu_west_1=S3('apikey','apisecret',region='eu-west-1')Fornow,oldapproachwillstillwork,butitwillbedeprecatedandfullyremovedinafuturerelease.
Deprecationandremovalwillbeannouncedwellinadvance.
Newstart_nodeandstop_nodemethodshavebeenaddedtothebaseLibcloudcomputeAPINodeDriverclass.
Alotoftheexistingcomputedriversalreadyimplementedthatfunctionalityviaextensionmethods(ex_start_node,ex_stop_node)soitwasdecidedtopromotethosemethodstobepartofthestandardLibcloudcomputeAPIandupdatealltheaffecteddrivers.
Forbackwardcompatibilityreasons,existingex_startandex_stop_nodemethodswillstillworkuntilanextmajorrelease.
Ifyouarerelyingoncodewhichusesex_startandex_stop_nodemethods,youareencouragedtoupdateittoutilizenewstart_nodeandstop_nodemethodssincethoseex_methodsarenowdeprecatedandwillberemovedinafuturemajorrelease.
1.
4.
Other143ApacheLibcloudDocumentation,Release3.
3.
1Libcloud1.
0.
0Per-regionproviderconstantsandrelateddriverclasseswhichhavebeendeprecatedinLibcloud0.
14.
0havenowbeenfullyremoved.
Thoseproviderdrivershavemovedtothesingleproviderconstant+regionconstructorargumentinLibcloud0.
14.
0.
Libcloud0.
20.
0Newoptionalttlargumenthasbeenaddedtolibcloud.
dns.
base.
Recordclassconstructorbeforetheexistingextraargument.
Ifyouhavepreviouslymanuallyinstantiatedthisclassanddidn'tusekeywordarguments,youneedtoupdateyourcodetocorrectlypassargumentstotheconstructor(youareencouragedtousekeywordargumentstoavoidsuchissuesinthefuture).
AllNodeState,StorageVolumeState,VolumeSnapshotStateandProviderattributesarenowstringsinsteadofintegers.
IfyouareusingthetostringandfromstringmethodsofNodeState,youarene.
IfyouareusingNodeState.
RUNNINGandthelike,youarealsone.
However,ifyouhavepreviouslydependedonthesebeingintegers,youneedtoupdateyourcodetodependonstrings.
Youshouldconsiderstartingusingthetostringandfromstringmethodsastheoutputofthesefunctionswillnotchangeinfutureversions,whiletheimplementationmight.
Libcloud0.
19.
0ThebasesignatureofNodeDriver.
create_volumehaschanged.
ThesnapshotargumentisnowexpectedtobeaVolumeSnapshotinsteadofastring.
Theoldersignaturewasnevercorrectforbuilt-indrivers,butcustomdriversmaybreak.
(GCEacceptedstrings,namesorNoneandstilldoes.
Otherdriversdidnotimplementcreatingvolumesfromsnapshotsatalluntilnow.
)VolumeSnapshotsnowhaveacreatedattributethatisadatetimeeldshowingthecreationdatetimeofthesnapshot.
TheeldinVolumeSnapshot.
extracontainingtheoriginalstringismaintained,sothisisabackwards-compatiblechange.
TheOpenStackcomputedrivermethodsex_create_snapshotandex_delete_snapshotarenowdeprecatedbythestandardmethodscreate_volume_snapshotanddestroy_volume_snapshot.
Youshouldupdateyourcode.
Thecomputebasedrivernowconsidersthenameargumenttocreate_volume_snapshottobeoptional.
Allofcialimplementationsofthismethodsalreadyconsidereditoptional.
Youshouldupdateanycustomdriversiftheyrelyonthenamebeingmandatory.
Libcloud0.
16.
0ChangesintheOpenStackauthenticationandservicecatalogclassesNote:Ifyouareonlyworkingwiththedriverclassesandhaveneverdorectlytouchedtheclassesmentionedbelow,thenyouaren'taffectedandthosechangesarefullybackwardcompatible.
TomakeOpenStackauthenticationandidentityrelatedclassesmoreextensible,easiertomainandeasiertouse,thoseclasseshavebeenrefactored.
Allofthechangesaredescribedbelow.
144Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Newlibcloud.
common.
openstack_identitymodulehasbeenadded.
ThismodulecontainscodeforworkingwithOpenStackIdentity(Keystone)service.
OpenStackAuthConnectionclasshasbeenremovedandreplacedwithoneconnectionclassperKeystoneAPIversion(OpenStackIdentity_1_0_Connection,OpenStackIdentity_2_0_Connection,OpenStackIdentity_3_0_Connection).
Newget_auth_classmethodhasbeenaddedtoOpenStackBaseConnectionclass.
Thismethodallowsyoutoretrieveaninstanceoftheauthenticationclasswhichisusedwiththecurrentconnection.
OpenStackServiceCatalogclasshasbeenrefactoredtostoreparsedcatalogentriesinastructuredformat(OpenStackServiceCatalogEntryandOpenStackServiceCatalogEntryEndpointclass).
Previouslyentrieswerestoredinanunstructuredforminadictionary.
AllthecatalogentriescanberetrievedbyusingOpenStackServiceCatalog.
get_entrismethod.
ex_force_auth_versionargumentinOpenStackServiceCatalogconstructormethodhasbeenre-namedtoauth_versionget_regions,get_service_typesandget_service_namesmethodsontheOpenStackServiceCatalogclasshavebeenmodiedtoalwaysreturntheresultinthesameorder(resultvaluesaresortedbeforehand).
Formoreinformationandexamples,pleaserefertotheLibcloudnowsupportsOpenStackIdentity(Keystone)APIv3blogpost.
Libcloud0.
14.
1FixrecordnameinconsistenciesintheRackspaceDNSdriverRecord.
nameattributeisnowcorrectlysettoNoneforrecordswhichrefertothebaredomainname.
Previously,Record.
nameattributeforsuchrecordswassettothedomainname.
Forexample,letshavealookatarecordwhichpointstothedomainexample.
com.
NewRecord.
nameattributevalueforsuchrecord:NoneOldRecord.
nameattributevalueforsuchrecord:example.
comThiswasdonetomaketheRackspacedriverconsistentwiththeotherones.
Libcloud0.
14.
0Tomakedriverswithmultipleregionseasiertouse,oneofthebigchangesinthisversionismoveawayfromtheold"oneclassperregion"modeltoanewsingleclassplusregionargumentmodel.
Moreinformationonhowthisaffectsexistingdriversandyourcodecanbefoundbelow.
DefaultContent-TypeisnowprovidedifnoneissuppliedandnonecanbeguessedInolderversions,Libcloudwouldthrowanexceptionwhenacontenttypeisnotsuppliedandnonecan'tbeautomat-icallydetectedwhenuploadinganobject.
Thishaschangedwiththe0.
14.
0release.
Nowifnocontenttypeisspeciedandnonecan'tbedetected,adefaultcontenttypeofapplication/octet-streamisused.
Ifyouwanttopreservetheoldbehavior,youcansetstrict_modeattributeonthedriverobjecttoTrue.
1.
4.
Other145ApacheLibcloudDocumentation,Release3.
3.
1fromlibcloud.
storage.
typesimportProviderfromlibcloud.
stoage.
providersimportget_drivercls=get_driver(Provider.
CLOUDFILES)driver=cls('username','apikey')driver.
strict_mode=TrueIfyouarenotusingstrictmodeandyouareuploadingabinaryobject,westillencourageyoutopracticePython's"explicitisbetterthanimplicit"mantraandexplicitlyspecifyContent-Typeofapplication/octet-stream.
SSHKeypairmanagementfunctionalityhasbeenpromotedtothebaseAPISSHkeypairmanagementfunctionalityhasbeenpromotedtobeapartofthebasecomputeAPI.
Assuch,thefollowingnewclassesandmethodshavebeenadded:libcloud.
compute.
base.
KeyPairlibcloud.
compute.
base.
NodeDriver.
list_key_pairslibcloud.
compute.
base.
NodeDriver.
create_key_pairlibcloud.
compute.
base.
NodeDriver.
import_key_pair_from_stringlibcloud.
compute.
base.
NodeDriver.
import_key_pair_from_lelibcloud.
compute.
base.
NodeDriver.
delete_key_pairPreviously,thisfunctionalitywasavailableinsomeoftheproviderdrivers(CloudStack,EC2,OpenStack)viathefollowingextensionmethods:ex_list_keypairsex_create_keypairex_import_keypair_from_stringex_import_keypairex_delete_keypairExistingextensionmethodswillcontinuetoworkuntilthenextmajorrelease,butyouarestronglyencouragedtostartusingnewmethodswhicharenowpartofthebasecomputeAPIandareguaranteedtoworkthesameacrossdifferentproviders.
NewdefaultkernelversionsusedwhencreatingLinodeserversKernelversionswhichareusedbydefaultwhencreatingLinodeservershavebeenupdated.
Olddefaultkernelversions:x86(noparavirt-ops)-2.
6.
18.
8-x86_64-linode1(#60)x86(paravirt-ops)-2.
6.
18.
8-x86_64-linode1(#110)x86_64(noparavirt-ops)-2.
6.
39.
1-linode34(#107)x86(paravirt-ops)64-2.
6.
18.
8-x86_64-linode1(#111)Newdefaultkernelversions:146Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1x86-3.
9.
3-x86-linode52(#137)x86_64-3.
9.
3-x86_64-linode33(#138)Thosenewkernelversionsnowcomewithparavirt-opsbydefault.
Ifyouwanttopreservetheoldbehavior,youcanpassex_kernelargumenttothecreate_nodemethod.
Keepinmindthatusingoldkernelsisstronglydiscouragedsincetheycontainknownsecurityholes.
Forexample:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
LINODE)driver=cls('username','api_key')driver.
create_node(.
.
.
,ex_kernel=110)Additionofnew"STOPPED"nodestateThisversionincludesanewstatecalledlibcloud.
compute.
types.
NodeState.
STOPPED.
Thisstaterepre-sentsanodewhichhasbeenstoppedandcanbestartedlateron(unlikeTERMINATEDstatewhichrepresentsanodewhichhasbeenterminatedandcan'tbestartedlateron).
Assuch,EC2andHostVirualdrivershavealsobeenupdatedtorecognizethisnewstate.
Beforeadditionofthisstate,nodesinthisstateweremappedtoNodeState.
UNKNOWN.
AmazonEC2computedriverchangesAmazonEC2computedriverhasmovedtosingleclassplusregionargumentmodel.
Assuch,thefollowingproviderconstantshavebeendeprecated:EC2_US_EASTEC2_US_WEST_OREGONEC2_EUEC2_EU_WESTEC2_AP_SOUTHEASTEC2_AP_SOUTHEAST2EC2_AP_NORTHEASTEC2_SA_EASTAndreplacedwithasingleconstant:EC2-Supportedvaluesfortheregionargumentare:us-east-1,us-west-1,us-west-2,eu-west-1,ap-southeast-1,ap-northeast-1,sa-east-1,ap-southeast-2.
Defaultvalueisus-east-1.
Listwhichshowshowoldclassesmaptoanewregionargumentvalue:EC2_US_EAST->us-east-1EC2_US_WEST->us-west-11.
4.
Other147ApacheLibcloudDocumentation,Release3.
3.
1EC2_US_WEST_OREGON->us-west-2EC2_EU->eu-west-1EC2_EU_WEST->eu-west-1EC2_AP_SOUTHEAST->ap-southeast-1EC2_AP_SOUTHEAST2->ap-southeast-2EC2_AP_NORTHEAST->ap-northeast-1EC2_SA_EAST->sa-east-1Oldcode:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls1=get_driver(Provider.
EC2)cls2=get_driver(Provider.
EC2_EU_WEST)driver1=cls('username','api_key')driver2=cls('username','api_key')Newcode:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
EC2)driver1=cls('username','api_key',region='us-east-1')driver2=cls('username','api_key',region='eu-west-1')RackspacecomputedriverchangesRackspacecomputedriverhasmovedtosingleclassplusregionargumentmodel.
Assuch,thefollowingproviderconstantshavebeenremoved:RACKSPACERACKSPACE_UKRACKSPACE_AURACKSPACE_NOVA_ORDRACKSPACE_NOVA_DFWRACKSPACE_NOVA_LONRACKSPACE_NOVA_BETAAndreplacedwithtwonewconstants:RACKSPACE_FIRST_GEN-Supportedvaluesforregionargumentare:us,uk.
Defaultvalueisus.
RACKSPACE-Supportedvaluesfortheregionargumentare:dfw,ord,iad,lon,syd,hkg.
Defaultvalueisdfw.
148Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Besidesthat,RACKSPACEproviderconstantnowdefaultstonext-generationOpenStackbasedservers.
Previouslyitdefaultedtorstgenerationcloudservers.
Ifyouwanttopreserveoldbehavioranduserst-gendriversyouneedtouseRACKSPACE_FIRST_GENproviderconstant.
Firstgenerationcloudserversnowalsouseauth2.
0bydefault.
Previouslytheyusedauth1.
0.
Becauseofthenatureofthisrst-gentonext-genchange,oldconstantshavebeenfullyremovedandunlikeregionchangesinotherdriver,thischangeisnotbackwardcompatible.
Listwhichshowshowold,rst-genclassesmaptoanewregionargumentvalue:RACKSPACE->usRACKSPACE_UK->ukListwhichshowshowold,next-genclassesmaptoanewregionargumentvalue:RACKSPACE_NOVA_ORD->ordRACKSPACE_NOVA_DFW->dfwRACKSPACE_NOVA_LON->lonRACKSPACE_AU->sydMoreexampleswhichshowhowtoupdateyourcodetoworkwithanewversioncanbefoundbelow.
Oldcode(connectingtoarst-genprovider):fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls1=get_driver(Provider.
RACKSPACE)#USregoncls2=get_driver(Provider.
RACKSPACE_UK)#UKregondriver1=cls('username','api_key')driver2=cls('username','api_key')Newcode(connectingtoarst-genprovider):fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
RACKSPACE_FIRST_GEN)driver1=cls('username','api_key',region='us')driver2=cls('username','api_key',region='uk')Oldcode(connectingtoanext-genprovider)fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls1=get_driver(Provider.
RACKSPACE_NOVA_ORD)cls2=get_driver(Provider.
RACKSPACE_NOVA_DFW)cls3=get_driver(Provider.
RACKSPACE_NOVA_LON)driver1=cls('username','api_key')driver2=cls('username','api_key')driver3=cls('username','api_key')1.
4.
Other149ApacheLibcloudDocumentation,Release3.
3.
1Newcode(connectingtoanext-genprovider)fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
RACKSPACE)driver1=cls('username','api_key',region='ord')driver2=cls('username','api_key',region='dfw')driver3=cls('username','api_key',region='lon')CloudStackcomputedriverchangesCloudStackdriverreceivedalotofchangesandadditionswhichwillmakeitmorepleasanttouse.
Backwardincom-patiblechangesarelistedbelow:CloudStackForwardingRuleclasshasbeenrenamedtoCloudStackIPForwardingRulecreate_nodemethodargumentsarenowmoreconsistentwithotherdrivers.
Securitygroupsarenowpassedasex_security_groups,SSHkeypairsarenowpassedasex_keynameanduserdataisnowpassedasex_userdata.
Foradvancednetworkingzones,multiplenetworkscannowbepassedtothecreate_nodemethodinsteadofasinglenetworkid.
ThesenetworksneedtobeinstancesoftheCloudStackNetworkclass.
Theextra_argsargumentofthecreate_nodemethodhasbeenremoved.
Theonlyargumentsacceptedarenowthedefaultsname,size,image,locationplusex_keyname,ex_userdata,ex_security_groupsandnetworks.
JoyentcomputedriverchangesJoyentdriverhasbeenalignedwithotherdriversandnowtheconstructortakesregioninsteadoflocationargument.
Forbackwardcompatibilityreasons,oldargumentwillcontinuetoworkuntilthenextmajorrelease.
Oldcode:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
JOYENT)driver=cls('username','api_key',location='us-east-1')Oldcode:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
JOYENT)driver=cls('username','api_key',region='us-east-1')150Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1ElasticHostscomputedriverchangesElasticHostscomputedriverhasmovedtosingleclassplusregionargumentmodel.
Assuch,thefollowingproviderconstantshavebeendeprecated:ELASTICHOSTS_UK1ELASTICHOSTS_UK1ELASTICHOSTS_US1ELASTICHOSTS_US2ELASTICHOSTS_US3ELASTICHOSTS_CA1ELASTICHOSTS_AU1ELASTICHOSTS_CN1Andreplacedwithasingleconstant:ELASTICHOSTS-Supportedvaluesfortheregionargumentare:lon-p,lon-b,sat-p,lax-p,sjc-c,tor-p,syd-y,cn-1Defaultvalueissat-p.
Listwhichshowshowoldclassesmaptoanewregionargumentvalue:ELASTICHOSTS_UK1->lon-pELASTICHOSTS_UK1->lon-bELASTICHOSTS_US1->sat-pELASTICHOSTS_US2->lax-pELASTICHOSTS_US3->sjc-cELASTICHOSTS_CA1->tor-pELASTICHOSTS_AU1->syd-yELASTICHOSTS_CN1->cn-1Becauseofthischangemaindriverclasshasalsobeenrenamedfromlibcloud.
compute.
drivers.
elastichosts.
ElasticHostsBaseNodeDrivertolibcloud.
compute.
drivers.
elastichosts.
ElasticHostsNodeDriver.
Onlyuserswhodirectlyinstantiateadriveranddon'tuserecommendedget_drivermethodareaffectedbythischange.
Oldcode:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls1=get_driver(Provider.
ELASTICHOSTS_UK1)cls2=get_driver(Provider.
ELASTICHOSTS_US2)driver1=cls('username','api_key')driver2=cls('username','api_key')Newcode:1.
4.
Other151ApacheLibcloudDocumentation,Release3.
3.
1fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
ELASTICHOSTS)driver1=cls('username','api_key',region='lon-p')driver2=cls('username','api_key',region='lax-p')UnicationofextensionargumentsforsecuritygrouphandlingintheEC2driverTounifyextensionargumentsforhandlingsecuritygroupsbetweendrivers,ex_securitygroupargumentintheEC2create_nodemethodhasbeenrenamedtoex_security_groups.
Forbackwardcompatibilityreasons,oldargumentwillcontinuetoworkforuntilanextmajorrelease.
CloudFilesStoragedriverchangesCLOUDFILES_USandCLOUDFILES_UKproviderconstantshavebeendeprecatedandanewCLOUDFILEScon-stanthasbeenadded.
Usercannowusethissingleconstantandspecifywhichregiontousebypassingregionargumenttothedriverconstructor.
Oldcode:fromlibcloud.
storage.
typesimportProviderfromlibcloud.
storage.
providersimportget_drivercls1=get_driver(Provider.
CLOUDFILES_US)cls2=get_driver(Provider.
CLOUDFILES_UK)driver1=cls1('username','api_key')driver2=cls1('username','api_key')Newcode:fromlibcloud.
compute.
typesimportProviderfromlibcloud.
compute.
providersimportget_drivercls=get_driver(Provider.
CLOUDFILES)driver1=cls1('username','api_key',region='dfw')driver2=cls1('username','api_key',region='lon')RackspaceDNSdriverchangesRackspaceDNSdriverhasmovedtooneclassplusregionargumentmodel.
Assuch,thefollowingproviderconstantshavebeendeprecated:RACKSPACE_USRACKSPACE_UKAndreplacedwithasingleconstant:152Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1RACKSPACE-Supportedvaluesforregionargumentsareus,uk.
Defaultvalueisus.
Oldcode:fromlibcloud.
dns.
typesimportProviderfromlibcloud.
dns.
providersimportget_drivercls1=get_driver(Provider.
RACKSPACE_US)cls2=get_driver(Provider.
RACKSPACE_UK)driver1=cls1('username','api_key')driver2=cls1('username','api_key')Newcode:fromlibcloud.
dns.
typesimportProviderfromlibcloud.
dns.
providersimportget_drivercls=get_driver(Provider.
RACKSPACE)driver1=cls1('username','api_key',region='us')driver2=cls1('username','api_key',region='uk')RackspaceloadbalancerdriverchangesRackspaceloadbalancerdriverhasmovedtooneclassplusregionargumentmodel.
Assuch,thefollowingproviderconstantshavebeendeprecated:RACKSPACE_USRACKSPACE_UKAndreplacedwithasingleconstant:RACKSPACE-Supportedvaluesforregionargumentsaredfw,ord,iad,lon,syd,hkg.
Defaultvalueisdfw.
Oldcode:fromlibcloud.
loadbalancer.
typesimportProviderfromlibcloud.
loadbalancer.
providersimportget_drivercls1=get_driver(Provider.
RACKSPACE_US)cls2=get_driver(Provider.
RACKSPACE_UK)driver1=cls1('username','api_key')driver2=cls1('username','api_key')Newcode:fromlibcloud.
loadbalancer.
typesimportProviderfromlibcloud.
loadbalancer.
providersimportget_drivercls=get_driver(Provider.
RACKSPACE)driver1=cls1('username','api_key',region='ord')driver2=cls1('username','api_key',region='lon')1.
4.
Other153ApacheLibcloudDocumentation,Release3.
3.
1ScriptDeploymentandScriptFileDeploymentconstructornowtakesargsargumentlibcloud.
compute.
deployment.
ScriptDeploymentandlibcloud.
compute.
deployment.
ScriptFileDeploymentclassconstructornowtakeargsasasecondargument.
Previouslythisargumentwasnotpresentandthesecondargumentwasname.
Ifyouhaveacodewhichinstantiatethoseclassesdirectlyandpassestwoormorearguments(notkeywordarguments)totheconstructoryouneedtoupdateittopreservetheoldbehavior.
Oldcode:sd=ScriptDeployment('#!
/usr/bin/envbashecho"ponies!
"','ponies.
sh')Newcode:sd=ScriptDeployment('#!
/usr/bin/envbashecho"ponies!
"',None,'ponies.
sh')Evenbetter(usingkeywordarguments):sd=ScriptDeployment(script='#!
/usr/bin/envbashecho"ponies!
"',name='ponies.
sh')PricingdatachangesBydefaultthisversionofLibcloudtriestoreadpricingdatafromthe~/.
libcloud/pricing.
jsonle.
Ifthisledoesn'texist,Libcloudfallsbacktotheoldbehaviorandthepricingdataisreadfromthepricinglewhichisshippedwitheachrelease.
Formoreinformation,pleaseseeusing-custom-pricing-lepage.
RecordTypeENUMvalueisnowastringlibcloud.
dns.
types.
RecordTypeENUMvalueusedbeaninteger,butfromthisversionon,it'snowastring.
Thiswasdonetomakeitsimplerandremoveunnecessaryindirection.
IfyouuseRecordTypeclassinyourcodeasrecommended,nochangesarerequired,butifyouuseintegervaluesdirectly,youneedtoupdateyourcodetouseRecordTypeclassotherwiseitwillbreak.
OK:#.
.
.
record=driver.
create_record(name=www,zone=zone,type=RecordType.
A,data='127.
0.
0.
1')NotOK:#.
.
.
record=driver.
create_record(name=www,zone=zone,type=0,data='127.
0.
0.
1')154Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1CachebustingfunctionalityisnowonlyenabledinRackspacerst-gendriverCachebustingfunctionalityhasbeendisabledintheRackspacenext-gendriverandalloftheOpenStackdrivers.
It'snowonlyenabledintheRackspacerst-gendriver.
CachebustingfunctionalityworksbyappendingarandomqueryparametertoeveryGETHTTPrequest.
ItwasoriginallyaddedtotheRackspacerst-gendriveralongtimeagotoavoidexcessiveHTTPcachingontheproviderside.
Thisexcessivecachingsometimescausedlist_nodesandothercallstoreturnstaledata.
ThisapproachshouldnotbeneededwithRackspacenext-genandOpenStackdriverssoithasbeendisabled.
Noactionisrequiredontheuser'sside.
libcloud.
security.
VERIFY_SSL_CERT_STRICTvariablehasbeenremovedlibcloud.
security.
VERIFY_SSL_CERT_STRICTvariablehasbeenintroducedinversion0.
4.
2whenweinitiallyaddedsupportforSSLcerticateverication.
ThisvariablewasaddedtoeasethemigrationfromolderversionsofLibcloudwhichdidn'tverifySSLcerticates.
Inversion0.
6.
0,thisvariablehasbeensettoTruebydefaultanddeprecated.
Inthisrelease,thisvariablehasbeenfullyremoved.
FormoreinformationonhowSSLcerticatevalidationworksinLibcloud,seetheSSLCerticateValidationpage.
get_containermethodchangesintheS3driverPreviously,theget_containermethodintheS3driverusedaveryinefcientapproachofusinglist_containers+latelterting.
ThecodewaschangedtouseamoreefcientapproachwhichmeansusingasingleHTTPHEADrequest.
Theonlydownsideofthisapproachisthatitdoesn'treturncontainercreationdate.
Ifyouneedthecontainercreationdate,youshoulduselist_containersmethodanddothelaterlteringyour-self.
Libcloud0.
8restart_nodemethodhasbeenremovedfromtheOpenNebulacomputedriver,becauseOpenNebulaOCCIimplementationdoesnotsupportaproperrestartmethod.
ex_save_imagemethodintheOpenStackdrivernowreturnsaNodeImageinstance.
Forafulllistofchanges,pleaseseetheCHANGESle.
Libcloud0.
7Forconsistency,public_ipandprivate_ipattributeontheNodeobjecthavebeenrenamedtopublic_ipsandprivate_ipsrespectively.
In0.
7youcanstillaccessthoseattributesusingtheoldway,butthisoptionwillberemovedinthenextmajorrelease.
Note:Ifyouhaveplacesinyourcodewhereyoudirectlyinstantiatea''Node''class,youneedtoupdateit.
Oldcode:1.
4.
Other155ApacheLibcloudDocumentation,Release3.
3.
1node=Node(id='1',name='testnode',state=NodeState.
PENDING,private_ip=['10.
0.
0.
1'],public_ip=['88.
77.
66.
77'],driver=driver)Updatedcode:node=Node(id='1',name='testnode',state=NodeState.
PENDING,private_ips=['10.
0.
0.
1'],public_ips=['88.
77.
66.
77'],driver=driver)Olddeprecatedpathshavebeenremoved.
Ifyoustillhaven'tupdatedyourcodeyouneedtodoitnow,otherwiseitwon'tworkwith0.
7andfuturereleases.
Belowisalistofoldpathsandtheirnewlocations:libcloud.
base->libcloud.
compute.
baselibcloud.
deployment->libcloud.
compute.
deploymentlibcloud.
drivers.
*->libcloud.
compute.
drivers.
*libcloud.
ssh->libcloud.
compute.
sshlibcloud.
types->libcloud.
compute.
typeslibcloud.
providers->libcloud.
compute.
providersInthecontrib/directoryyoucanalsondasimplebashscriptwhichcanperformasearchandreplaceforyou-migrate_paths.
py.
Forafulllistofchanges,pleaseseetheCHANGESle.
Libcloud0.
6SSLcerticatevericationisnowenabledbydefaultandanexceptionisthrownifCAcerticatelescannotbefound.
Toreverttotheoldbehavior,setlibcloud.
security.
VERIFY_SSL_CERT_STRICTvariabletoFalse:libcloud.
security.
VERIFY_SSL_CERT_STRICT=FalseNote:YouarestronglydiscouragedfromdisablingSSLcerticatevalidation.
IfyoudisableitandnoCAcerticateslesarefoundonthesystemyouarevulnerabletoaman-in-the-middleattackMoreinformationonhowtoacquireandinstallCAcerticatelesondifferentoperatingsystemscanbefoundonSSLCerticateValidationpageOpenStackdrivernowdefaultstousingOpenStack1.
1API.
TopreservetheoldbehavioranduseOpenStack1.
0API,passapi_version='1.
0'keywordargumenttothedriverconstructor.
Forexample:Cls=get_provider(Provider.
OPENSTACK)driver=Cls('user_name','api_key',False,'host',8774,api_version='1.
0')OpenNebuladrivernowdefaultstousingOpenNebula3.
0APITopreservetheoldbehavioranduseOpenNebula1.
4API,passapi_version='1.
4'keywordargumenttothedriverconstructor.
156Chapter1.
DocumentationApacheLibcloudDocumentation,Release3.
3.
1Forexample:Cls=get_provider(Provider.
OPENNEBULA)driver=Cls('key','secret',api_version='1.
4')Forafulllistofchanges,pleaseseetheCHANGESle.
1.
4.
3SecurityReportingavulnerabilityNote:PleasedonotreportsecurityissuesusingourpublicGithubinstance.
Usetheprivatemailinglistdescribedbelow.
Ifyoubelieveyou'vefoundasecurityissueoravulnerability,pleasesendadescriptionofittoourprivatemailinglistatsecurity@libcloud.
apache.
orgYouarealsoencouragedtoencryptthisemailusingPGP.
Keysofourdeveloperscanbefoundathttps://www.
apache.
org/dist/libcloud/KEYS.
Onceyou'vesubmittedanissue,youshouldreceiveanacknowledgmentfromoneourofteammembersin48hoursorless.
Iffurtheractionisnecessary,youmayreceiveadditionalfollow-upemails.
HowarevulnerabilitieshandledWefollowastandardApacheSoftwareFoundationvulnerabilityhandlingprocesswhichisdescribedathttp://www.
apache.
org/security/committers.
html#vulnerability-handlingNote:Unlessnotedotherwise,alloftheexamplesandcodesnippetsinthedocumentationarelicensedundertheApache2.
0license.
1.
4.
Other157

创梦云 香港沙田、长沙联通2核1G仅需29元一个月 挂机宝7元一个月

商家介绍:创梦云是来自国内的主机销售商,成立于2018年4月30日,创梦云前期主要从事免备案虚拟主机产品销售,现在将提供5元挂机宝、特惠挂机宝、香港云服务器、美国云服务器、低价挂机宝等产品销售。主打高性价比高稳定性挂机宝、香港云服务器、美国云服务器、香港虚拟主机、美国虚拟主机。官方网站:http://cmy0.vnetdns.com本次促销产品:地区CPU内存硬盘带宽价格购买地址香港特价云服务器1...

RAKsmart 2021新年新增韩国服务器及香港美国日本VPS半价

RAKsmart 商家我们肯定不算陌生,目前主要的营销客户群肯定是我们。于是在去年的时候有新增很多很多的机房,比如也有测试过的日本、香港、美国机房,这不今年有新增韩国机房(记得去年是不是也有增加过)。且如果没有记错的话,之前VPS主机也有一次磁盘故障的问题。 这不今天有看到商家新增韩国服务器产品,当然目前我还不清楚商家韩国服务器的线路和速度情况,后面我搞一台测试机进行...

cera:秋季美国便宜VPS促销,低至24/月起,多款VPS配置,自带免费Windows

介绍:819云怎么样?819云创办于2019,由一家从2017年开始从业的idc行业商家创办,主要从事云服务器,和物理机器819云—-带来了9月最新的秋季便宜vps促销活动,一共4款便宜vps,从2~32G内存,支持Windows系统,…高速建站的美国vps位于洛杉矶cera机房,服务器接入1Gbps带宽,采用魔方管理系统,适合新手玩耍!官方网站:https://www.8...

pastebin为你推荐
外挂购买自动充值软件brandoff国际大牌包包都有哪些呐?www.jjwxc.net有那个网站可以看书?rawtools照片上面的RAW是什么意思,为什么不能到PS中去编辑百花百游百花净斑方效果怎么样?www.522av.com我的IE浏览器一打开就是这个网站http://www.522dh.com/?mu怎么改成百度啊 怎么用注册表改啊www.vtigu.com初三了,为什么考试的数学题都那么难,我最多也就135,最后一道选择,填空啊根本没法做,最后几道大题倒抓站工具公司网站要备份,谁知道好用的网站抓取工具,能够抓取bbs论坛的。推荐一下,先谢过了!杨丽晓博客杨丽晓是怎么 出道的ww.66bobo.com这个WWW ̄7222hh ̄com是不是真的不太易开了,换了吗?
万网域名证书查询 域名抢注工具 新秒杀 godaddy主机 外国服务器 isatap 贵州电信宽带测速 lighttpd 国外空间 全站静态化 有益网络 howfile softbank邮箱 空间购买 上海电信测速 smtp服务器地址 独立主机 apnic hdroad xshell5注册码 更多