exoscale / egoscale Goto Github PK
View Code? Open in Web Editor NEWexoscale golang bindings
License: Apache License 2.0
exoscale golang bindings
License: Apache License 2.0
two little things with template list
template := &egoscale.Template{IsFeatured: true, ZoneID: "1"}
ZoneID = 1
, when it should use the defaultZone
insteadkeyword
$ exo template list LTS
"Linux Ubuntu 18.04 LTS 64-bit 10G Disk (2018-04-26-0e6133)"
"Linux Ubuntu 16.04 LTS 64-bit 10G Disk (2018-03-02-5858e9)"
% exo firewall remove my-cluster --all
[+] sure you want to delete all 0 firewall rules [yN]: y
13fb8b54-824a-432c-8b72-a99a3128df18
4a14f26c-a6b0-4042-a8aa-8e281a27acc2
e8521cd7-7851-4f89-b59f-590ac81ed422
7d22e6b2-0075-4b65-a4ee-682efbe2a1bc
78891d34-c586-45a9-8fd5-dcc32b2158cc
Hi, could you share some basic examples of how to query for example running instances, fetch tags of them etc, something that could replace for example the python cs
:
$ cs listVirtualMachines state=Running | jq
$ exo vm delete xyz
Destroying...
5c2beeb6-8f08-4653-849c-f657b2f233aa
wait, no!
just like with the connection, it shouldn't fail on us and print something useful.
% exo ssh irc --print
default ssh KeyPair not found "Default ssh keypair not found" infos.sshKeys
% exo ssh irc
Warning: Identity file Default ssh keypair not found not accessible: No such file or directory.
Welcome to Ubuntu 18.04 LTS (GNU/Linux 4.15.0-24-generic x86_64)
ubuntu@irc:~$
exo create test-cluster --security-group k8s-security-group --firewall-rules-add
k8s-security-group is used to add rules but instances are created with "default" SG
$ ./exo vm create hello
panic: unable to redefine 'a' shorthand in "create" flagset: it's already used for "anti-affinity-group" flag
Using 7dd1d92
Make sure we support both of them.
Check out go-cloudstack as well...
An attempt to delete many VMs stops at the first one, either successful or not.
% exo vm delete huey louie dewey
[+] sure you want to delete "huey" virtual machine [Yn]: y
Destroying....
9f0ea9d3-85e2-4068-a6e1-4ec967dd8904
% exo vm delete huey louie dewey
Unable to get Virtual Machine "huey". API error ParamError 431 (CSErrorCode(0) 0): not found, query: apikey=EXO9f5db99c785d5821b58627d1, command=listVirtualMachines, name=huey, response=json
%
I would hide the secret key from the output, at least by default.
$ exo config show myorg
API KEY: EXO...
API Secret: ×××××××××××××××××××××××××××
...
exo create test-cluster--security-group k8s-security-group --firewall-rules-add
2018/06/29 10:58:50 API error InternalError 530 (CSErrorCode(0) 0): Failed to authorize security group ingress rule(s)
context https://github.com/exoscale/exoip/blob/4b6c67e461495317288803a0c8eeb263e794cbd3/engine.go#L196-L207
the .Get
can be a complex call, and the error message saying id: %s, name: %s
is not good enough in some cases.
https://github.com/exoscale/egoscale/blob/master/virtual_machines.go#L36
Idea we could use the Payload
of the request to show the actual request made.
something looks broken.
% exo firewall list
┼────────────┼────────────────────────┼──────────────────────────────────────┼
│ NAME │ DESCRIPTION │ ID │
┼────────────┼────────────────────────┼──────────────────────────────────────┼
│ my-cluster │ │ 307d40be-34d1-4d45-8019-ce4a18a74609 │
┼────────────┼────────────────────────┼──────────────────────────────────────┼
% exo firewall add my-cluster --protocol all --security-group my-cluster
Security group not found wrong ID or Name, got
% exo firewall add my-cluster --protocol all -c 0.0.0.0/0
Security group not found wrong ID or Name, got
in the issue #179 we want to leave from cloudstack.ini
configuration file. So what can be the new format of our new config file
Advantage:
When you have the time to tackle this one.
(via generate/main
)
ExpungeVirtualMachine
1ListSnapshots
1ListEvents
13ListAffinityGroups
9ListNics
5ScaleVirtualMachine
3AssociateIPAddress
9UpdateVMAffinityGroup
3StopVirtualMachine
2UpdateInstanceGroup
2DeployVirtualMachine
32ListAffinityGroupTypes
1GetVMPassword
1ListTemplates
13ActivateIP6
1ListZones
1UpdateUser
2CreateInstanceGroup
4ListAccounts
9DestroyVirtualMachine
2AddNicToVirtualMachine
3ListResourceLimits
10CreateAffinityGroup
5DisassociateIPAddress
1ChangeServiceForVirtualMachine
3StartVirtualMachine
3ResetPasswordForVirtualMachine
3ListSecurityGroups
11AuthorizeSecurityGroupIngress
13UpdateIPAddress
3RevokeSecurityGroupIngress
1ListVirtualMachines
29DeleteInstanceGroup
5UpdateVirtualMachine
12AuthorizeSecurityGroupEgress
13CreateSnapshot
1ListVolumes
18RebootVirtualMachine
1DeleteSecurityGroup
6RemoveNicFromVirtualMachine
2AddIPToNic
2ListServiceOfferings
1RecoverVirtualMachine
2RemoveIPFromNic
1RevokeSecurityGroupEgress
1UpdateDefaultNicForVirtualMachine
4ListPublicIPAddresses
22RestoreVirtualMachine
3ResizeVolume
4ListInstanceGroups
9DeleteAffinityGroup
5CreateSecurityGroup
5at the moment, exo config show
wants an explicit configuration to be displayed. It'd be nice to have the default one.
% exo config show
(help)
% exo config list
- foo [default]
% exo config show foo
what I wanted in the first play
% exo firewall add test -c 0.0.0.0/0 -p ALL
panic: runtime error: index out of range
goroutine 1 [running]:
github.com/exoscale/egoscale/cmd/exo/cmd.glob..func14(0xb8ed60, 0xc4201a2050, 0x1, 0x5, 0x0, 0x0)
/home/yoan/go/src/github.com/exoscale/egoscale/cmd/exo/cmd/firewall_add.go:120 +0xeec
github.com/exoscale/egoscale/cmd/exo/vendor/github.com/spf13/cobra.(*Command).execute(0xb8ed60, 0xc4201a2000, 0x5, 0x5, 0xb8ed60, 0xc4201a2000)
/home/yoan/go/src/github.com/exoscale/egoscale/cmd/exo/vendor/github.com/spf13/cobra/command.go:762 +0x468
github.com/exoscale/egoscale/cmd/exo/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xb89a40, 0xc420167f00, 0x20, 0x7d7067)
/home/yoan/go/src/github.com/exoscale/egoscale/cmd/exo/vendor/github.com/spf13/cobra/command.go:852 +0x30a
github.com/exoscale/egoscale/cmd/exo/vendor/github.com/spf13/cobra.(*Command).Execute(0xb89a40, 0x90c720, 0xc420072c60)
/home/yoan/go/src/github.com/exoscale/egoscale/cmd/exo/vendor/github.com/spf13/cobra/command.go:800 +0x2b
github.com/exoscale/egoscale/cmd/exo/cmd.Execute()
/home/yoan/go/src/github.com/exoscale/egoscale/cmd/exo/cmd/root.go:94 +0x16d
main.main()
/home/yoan/exoscale/egoscale/cmd/exo/main.go:11 +0x2f
Just like Get
, and Delete
Current API
client.Request(command)
client.AsyncRequest(command, {Delay, Retries})
Additional API
client.RequestWithContext(ctx, command)
client.AsyncRequestWithContext(ctx, command)
, you are responsible to give a ctx with a Timeout or Cancel it.The async request, can have a default strategy to retry on the server in a decent fashion. E.g. at x% of the remaining time (where x changes).
https://github.com/xanzy/go-cloudstack/blob/master/cloudstack/cloudstack.go#L286-L290
Issues
A call may take some time, and one cannot cancel it. It should accept a context
everywhere.
At Google, we require that Go programmers pass a Context parameter as the first argument to every function on the call path between incoming and outgoing requests. This allows Go code developed by many different teams to interoperate well. It provides simple control over timeouts and cancelation and ensures that critical values like security credentials transit Go programs properly.
cf. #41
Deploying node-1..
Creating sshkey
Deploying node-2...
Creating sshkey
Deploying node-3...
Installing Docker on node(s).................................................
RKE install:
2018/06/29 09:09:06 exec: "rke": executable file not found in $PATH
% ./exo privnet delete hello
dcf1a85d-c5fe-43cc-b509-59a9ccd8d74d
All the links point to 4.10 which is inaccurate... mostly. Change them or remove them.
% exo firewall
list List security groups or show a security group rules details
that or means it should have two commands, list
and show
Anything can fail, take way longer than expected, etc...
Scenario, the VM doesn't have the port 22 open.
$ exo firewall remove default0 <...> # port 22
$ exo ssh my-vm
Warning: Identity file /home/yoan/.exoscale/instances/bed92ae5-494e-4802-80ab-e28dc633e1a8/id_rsa not accessible: No such file or directory.
<hanging there for a very long time>
ssh: connect to host 159.100.251.224 port 22: Connection timed out
2018/06/21 10:00:38 exit status 255
Example:
kubernetes/kubectl@7448de5
The ability to continue the flow after a ^C could become useful.
When use Paginate, the callback function receives the value itself rather than a pointer to it. It's premature optimization but it would be more efficient and similar the the other calls to have a pointer instead.
// direct call - no pagination
r, _ := client.Request(&egoscale.ListAPIs{})
apis := r.(*egoscale.ListAPIsResponse).API
// whole list with Pagination
apis, _ := client.List(&egoscale.API{})
for _, i := range apis {
// now
api := i.(egoscale.API)
// proposal
api := i.(*egoscale.API)
// ...
}
// iterate with pagination
client.Paginate(&egoscale.ListAPIs, func(i interface{}, e error) bool {
// now
api := i.(egoscale.API)
// proposal
api := i.(*egoscale.API)
// ...
})
Ideas for the config.
/.exoscale/config.toml
No cloudstack.ini
detected.
$ exo config
Hi happy Exoscalian, some configuration is required to use exo
Do you have an account already? [Yn]
[No] -> quit, explain how to create one's account
[Yes]
We now need some very important informations, find them there.
https://portal.exoscale.com/account/profile/api
Endpoint: https://api.exoscale.ch/compute # only on a retry
API Key:
Secret Key:
Testing the credentials...
[failure] -> go back to key/secret with the endpoint confirmation
[success]
Organization name [exoscale-2]
Make exoscale-2 your current profile? [Yn]
Do you have more credentials to import? [Yn]
[No] -> quit with a nice message
[Yes] -> go back to API Key/Secret
Some cloudstack.ini
file were detected.
$ exo config
Howdy experienced Exoscalian, some configuration is required to use exo.
We've found the following configurations:
- [cloudstack] EXO...
- [prod] EXO...
- [preprod:admin] EXO...
Do you wish to import them automagically? [All, some, none]
[None] -> go to non-cloudstack.ini file setup
[All] -> like some but without the question
[Some]
Importing cloudstack EXO...? [Yn]
[No] -> skip
[Yes]
Organization name [exoscale-2]
Make exoscale-2 your current profile? [Yn]
...
Existing configuration is detected
$ exo config
Good day! exo is already configured with accounts:
- exoscale-2 [current]
- [email protected]
- ...
Do you wish to add another account? [Yn]
[Yes] -> go to step 0
[No]
Bye bye!
$ exo config list
[*] exoscale-2
[email protected]
[email protected]@ppapi.exoscale.com
$ exo config set [email protected]@ppapi.exoscale.com
Current profile set to [email protected]@ppapi.exoscale.com
$ exo config show [email protected]
API Key: EXO...
API Secret: <hidden>
Endpoint: ...
$ exo config remove [email protected]
[email protected]
listApis
gives us enough informations to generate all the structs.
Do it!
fields to be removed
cf. #129
ExceptionErrorCodeMap.put("com.cloud.utils.exception.CloudRuntimeException", 4250);
ExceptionErrorCodeMap.put("com.cloud.utils.exception.ExecutionException", 4260);
ExceptionErrorCodeMap.put("com.cloud.utils.exception.HypervisorVersionChangedException", 4265);
ExceptionErrorCodeMap.put("com.cloud.exception.CloudException", 4275);
ExceptionErrorCodeMap.put("com.cloud.exception.AccountLimitException", 4280);
ExceptionErrorCodeMap.put("com.cloud.exception.AgentUnavailableException", 4285);
ExceptionErrorCodeMap.put("com.cloud.exception.CloudAuthenticationException", 4290);
ExceptionErrorCodeMap.put("com.cloud.exception.ConcurrentOperationException", 4300);
ExceptionErrorCodeMap.put("com.cloud.exception.ConflictingNetworkSettingsException", 4305);
ExceptionErrorCodeMap.put("com.cloud.exception.DiscoveredWithErrorException", 4310);
ExceptionErrorCodeMap.put("com.cloud.exception.HAStateException", 4315);
ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientAddressCapacityException", 4320);
ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientCapacityException", 4325);
ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientNetworkCapacityException", 4330);
ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientServerCapacityException", 4335);
ExceptionErrorCodeMap.put("com.cloud.exception.InsufficientStorageCapacityException", 4340);
ExceptionErrorCodeMap.put("com.cloud.exception.InternalErrorException", 4345);
ExceptionErrorCodeMap.put("com.cloud.exception.InvalidParameterValueException", 4350);
ExceptionErrorCodeMap.put("com.cloud.exception.ManagementServerException", 4355);
ExceptionErrorCodeMap.put("com.cloud.exception.NetworkRuleConflictException", 4360);
ExceptionErrorCodeMap.put("com.cloud.exception.PermissionDeniedException", 4365);
ExceptionErrorCodeMap.put("com.cloud.exception.ResourceAllocationException", 4370);
ExceptionErrorCodeMap.put("com.cloud.exception.ResourceInUseException", 4375);
ExceptionErrorCodeMap.put("com.cloud.exception.ResourceUnavailableException", 4380);
ExceptionErrorCodeMap.put("com.cloud.exception.StorageUnavailableException", 4385);
ExceptionErrorCodeMap.put("com.cloud.exception.UnsupportedServiceException", 4390);
ExceptionErrorCodeMap.put("com.cloud.exception.VirtualMachineMigrationException", 4395);
ExceptionErrorCodeMap.put("com.cloud.async.AsyncCommandQueued", 4540);
ExceptionErrorCodeMap.put("com.cloud.exception.RequestLimitException", 4545);
// Have a special error code for ServerApiException when it is
// thrown in a standalone manner when failing to detect any of the above
// standard exceptions.
ExceptionErrorCodeMap.put("org.apache.cloudstack.api.ServerApiException", 9999);
The golint
check is deactivate because there is no docs.
JobID
and JobStatus
should not be part of the structs themselves
I've spawned all my machines in dk2 instead...
% exo vm create huey --cloud-init-file init.yml --service-offering medium --template "Ubuntu 16.04 LTS" --security-group my-cluster
more than one template found for "Ubuntu 16.04 LTS"
The issue is linked wit the fact that this particular template still has the various sizes around.
% cs listTemplates --templatefilter=featured --keyword="16.04" --zoneid=1 | jq ".template[].displaytext"
"Linux Ubuntu 16.04 LTS 64-bit 10G Disk (2018-03-02-5858e9)"
"Linux Ubuntu 16.04 LTS 64-bit 400G Disk (2018-01-23-8856b8)"
"Linux Ubuntu 16.04 LTS 64-bit 50G Disk (2018-01-23-8856b8)"
"Linux Ubuntu 16.04 LTS 64-bit 200G Disk (2018-01-23-8856b8)"
"Linux Ubuntu 16.04 LTS 64-bit 100G Disk (2018-01-23-8856b8)"
fixing it is a hack... but it's already being made for template list
With the upcoming vgo
changes and the ever growing list of files you have to go through before reaching the README, it will be probably be the time to move packages files around.
github.com/exoscale/egoscale/cmd/cs
github.com/exoscale/egoscale/cmd/exo
github.com/exoscale/egoscale/compute
to contains all the cloudstack related filesgithub.com/exoscale/egoscale/dns
to contains all the dns related filesgithub.com/exoscale/egoscale
will be emptyerr := client.Create(&egoscale.SecurityGroup{
Name: "Hello",
Description: "This is a test",
})
Reading from the stdin should be cancelled by the global context.
% exo config
Good day! exo is already configured with accounts:
- cloudstack-testing [Default]
[+] Do you wish to add another account? [yN]: ^C^C^C^C^C
$ exo firewall add rancher http https
TYPE | SOURCE | PROTOCOL | PORT | DESCRIPTION | ID |
---|---|---|---|---|---|
INGRESS | CIDR 0.0.0.0/0 | tcp | 80 (http) | 7372b893-42ca-465e-8596-ff8de5dad088 |
is it easy to support multiple rules ?
Can you prepare the change to move from int to uuid for the ostypeid in the response of listVirtualMachines
. This has been reported upstream too and a change is awaiting validation/discussion: apache/cloudstack#2608
% export TF_LOG=trace terraform ...
should output the HTTP requests made.
% exo vm create huey \
--cloud-init-file init.yml \
--service-offering medium \
--template "Ubuntu 16.04 LTS" \
--security-group my-cluster
Creating sshkey
Deploying "huey".....
now
┼────────┼───────────────┼──────────────────────────────────────┼
│ NAME │ IP │ ID │
┼────────┼───────────────┼──────────────────────────────────────┼
│ huey │ 89.145.164.95 │ e724ad5a-4576-4203-a9ef-867806f5229a │
┼────────┼───────────────┼──────────────────────────────────────┼
idea
The deployment of "huey" went well! What to do now?
Connect to the machine
> exo ssh huey
ssh -i /home/me/.exoscale/.../id_rsa [email protected]
Put the SSH configuration into `.ssh/config`
> exo ssh huey --info
Host huey
HostName ...
...
Tip of the day: you're the sole owner of the private key. Be cautious with it.
..
err := client.Update(&egoscale.Network{
ID: "1",
Name: "Hello",
DisplayText: "This is a test",
})
Please tick the useful commands you'd want to see added.
createVPCOffering
ldapCreateAccount
createPod
removeRawUsageRecords
copyIso
deleteAutoScaleVmProfile
addExternalFirewall
deleteExternalLoadBalancer
listVirtualMachinesMetrics
deleteStoragePool
listHosts
updateStoragePool
rebootSystemVm
importLdapUsers
listDedicatedZones
listElastistorPool
updateFirewallRule
quotaIsEnabled
listSrxFirewalls
listHypervisors
deleteAccountFromProject
getSolidFireVolumeAccessGroupId
updateGuestOs
updateResourceLimit
#128deleteStaticRoute
listHostsMetrics
releaseDedicatedPod
deleteRemoteAccessVpn
updateNetworkACLList
deleteNiciraNvpDevice
deleteEvents
listUcsBlades
notifyBaremetalProvisionDone
getVolumeSnapshotDetails
deleteIso
deleteExternalFirewall
updateHost
createEgressFirewallRule
listVPCOfferings
getSolidFireVolumeSize
uploadVolume
configureOutOfBandManagement
listStorageTags
listTemplatePermissions
destroySystemVm
archiveEvents
addSwift
deleteSecondaryStagingStore
addSrxFirewall
updateLoadBalancer
scaleSystemVm
listSnapshotPolicies
updateVpnCustomerGateway
stopRouter
lockAccount
listClusters
deleteProjectInvitation
listProjectInvitations
listEgressFirewallRules
deleteTrafficType
updateRegion
listClustersMetrics
listLdapConfigurations
listSecondaryStagingStores
createRemoteAccessVpn
startRouter
listGuestOsMapping
deleteStratosphereSsp
createAutoScalePolicy
listPhysicalNetworks
listFirewallRules
deleteBrocadeVcsDevice
cleanVMReservations
extractIso
createSecondaryStagingStore
removeVmwareDc
listInternalLoadBalancerElements
updateLBHealthCheckPolicy
createLoadBalancerRule
addGuestOsMapping
disableOutOfBandManagementForZone
configureF5LoadBalancer
updateNetworkOffering
updateVPC
changeOutOfBandManagementPassword
deleteEgressFirewallRule
stopSystemVm
listResourceDetails
#99createNetworkOffering
dedicateCluster
createIpForwardingRule
listVolumesMetrics
listElastistorInterface
listSslCerts
listPrivateGateways
updateVmNicIp
updateLBStickinessPolicy
listPods
startInternalLoadBalancerVM
updateDiskOffering
deleteSrxFirewall
addAccountToProject
resetVpnConnection
createAutoScaleVmGroup
searchLdap
deleteLoadBalancerRule
addBaremetalPxePingServer
listPortableIpRanges
getVirtualMachineUserData
#103listConfigurations
disableStaticNat
deleteUcsManager
deleteHost
listCapabilities
releaseDedicatedZone
updateTrafficType
listConditions
updateNetworkServiceProvider
removeFromLoadBalancerRule
addNuageVspDevice
createStaticRoute
addTrafficType
deletePrivateGateway
listLoadBalancerRuleInstances
deleteCondition
updateDomain
updatePhysicalNetwork
disableAutoScaleVmGroup
createSnapshotPolicy
deleteNuageVspDevice
createRolePermission
listSystemVms
createProject
assignCertToLoadBalancer
addCiscoVnmcResource
replaceNetworkACLList
detachVolume
markDefaultZoneForAccount
enableOutOfBandManagementForZone
listLdapUsers
changeServiceForSystemVm
listIpForwardingRules
deleteVMSnapshot
listStoragePoolsMetrics
rebootRouter
listStoragePools
findHostsForMigration
updateHypervisorCapabilities
enableCiscoNexusVSM
dedicateGuestVlanRange
listStaticRoutes
listF5LoadBalancers
listExternalLoadBalancers
updateIso
listOpenDaylightControllers
addBigSwitchBcfDevice
deleteCounter
issueOutOfBandManagementPowerAction
deleteUser
deleteNetworkDevice
createPortForwardingRule
dedicateZone
prepareTemplate
#125assignToLoadBalancerRule
tmProvisionVirtualMachine
archiveAlerts
deleteCiscoVnmcResource
stopInternalLoadBalancerVM
addBrocadeVcsDevice
createDomain
listExternalFirewalls
login
listHypervisorCapabilities
addImageStore
tmDestroyVirtualMachine
getSolidFireAccountId
listSupportedNetworkServices
listRolePermissions
listDedicatedGuestVlanRanges
listNetworkACLs
addNetworkServiceProvider
deleteVpnGateway
copyTemplate
#125createServiceOffering
listNiciraNvpDeviceNetworks
assignVirtualMachine
deleteBigSwitchBcfDevice
configureNetscalerLoadBalancer
listOvsElements
associateUcsProfileToBlade
deleteNetworkServiceProvider
deleteNetworkOffering
dedicatePod
listNetworkDevice
updateStorageNetworkIpRange
deleteOpenDaylightController
updateTemplate
#125createVlanIpRange
updateVpnConnection
listPaloAltoFirewallNetworks
getPathForVolume
listUcsManagers
changeServiceForRouter
deleteLdapConfiguration
updateVolume
listTrafficTypes
addSecondaryStorage
updateAccount
disableAccount
#102listDomains
listUsageTypes
listNetworkACLLists
deleteTemplate
#125deleteVPC
updateVpnGateway
releaseDedicatedGuestVlanRange
migrateVirtualMachine
#126createTemplate
#125listBaremetalRct
listDedicatedClusters
uploadCustomCertificate
deleteVpnCustomerGateway
enableOutOfBandManagementForCluster
listPortForwardingRules
updateTemplatePermissions
listTrafficMonitors
updatePortForwardingRule
listBrocadeVcsDevices
linkDomainToLdap
deleteVpnConnection
deleteF5LoadBalancer
createNetworkACL
listVpnCustomerGateways
createGlobalLoadBalancerRule
deleteNetscalerLoadBalancer
listGlobalLoadBalancerRules
deleteDiskOffering
releaseDedicatedCluster
createVirtualRouterElement
createVPC
deleteAutoScalePolicy
deleteRole
deleteCiscoNexusVSM
listInternalLoadBalancerVMs
listCiscoVnmcResources
removeResourceDetail
listOsTypes
removeGuestOs
listSrxFirewallNetworks
detachIso
deletePaloAltoFirewall
deletePod
listDeploymentPlanners
deleteCluster
prepareHostForMaintenance
createRole
removeRegion
getVolumeiScsiName
getUploadParamsForVolume
updateAutoScaleVmProfile
updateAutoScaleVmGroup
enableAutoScaleVmGroup
updateGuestOsMapping
listDiskOfferings
updateHostPassword
createPortableIpRange
deleteCiscoAsa1000vResource
updateCluster
listUcsProfiles
listStorageProviders
updateGlobalLoadBalancerRule
createCondition
listProjects
createAccount
revertToVMSnapshot
addGuestOs
listHostTags
removeGuestOsMapping
registerIso
listCiscoAsa1000vResources
listElastistorVolume
deletePortableIpRange
listNiciraNvpDevices
addBaremetalPxeKickStartServer
listAlerts
upgradeRouterTemplate
extractVolume
listVlanIpRanges
listNuageVspDevices
cancelHostMaintenance
updateZone
listProjectAccounts
addExternalLoadBalancer
updateAutoScalePolicy
createDiskOffering
createLBHealthCheckPolicy
lockUser
listLBHealthCheckPolicies
listDedicatedPods
listVPCs
migrateVirtualMachineWithVolume
addNetworkDevice
updateUser
#99restartVPC
removeCertFromLoadBalancer
addHost
attachVolume
addBaremetalDhcp
addTrafficMonitor
listLoadBalancers
updateProject
deleteLBStickinessPolicy
listUsers
#99listVpnConnections
disableUser
listIsos
updateCloudToUseObjectStore
listAutoScalePolicies
addBaremetalRct
updateRole
listVmwareDcs
listRemoteAccessVpns
deleteNetworkACLList
createServiceInstance
releasePublicIpRange
listNetscalerLoadBalancerNetworks
startSystemVm
listNetworkIsolationMethods
listStorageNetworkIpRange
deleteDomain
configureVirtualRouterElement
migrateVolume
configureSrxFirewall
resetApiLimit
createInternalLoadBalancerElement
deleteVlanIpRange
generateAlert
addLdapConfiguration
ldapConfig
deletePortForwardingRule
deleteGlobalLoadBalancerRule
listBigSwitchBcfDevices
updateConfiguration
dedicatePublicIpRange
enableStaticNat
deleteZone
getUploadParamsForTemplate
releaseDedicatedHost
updateProjectInvitation
listRegions
configureInternalLoadBalancerElement
migrateSystemVm
listCounters
listVirtualRouterElements
deleteSnapshotPolicies
listTrafficTypeImplementors
deleteImageStore
listAutoScaleVmProfiles
disableOutOfBandManagementForHost
updateResourceCount
listVpnGateways
listRoles
getCloudIdentifier
createLBStickinessPolicy
configurePaloAltoFirewall
addCiscoAsa1000vResource
updateNetworkACLItem
listRouters
releaseHostReservation
createVpnConnection
listBrocadeVcsDeviceNetworks
deletePhysicalNetwork
dedicateHost
removeVpnUser
addGloboDnsHost
logout
deleteLBHealthCheckPolicy
listSwifts
enableOutOfBandManagementForHost
deleteServiceOffering
addNiciraNvpDevice
addF5LoadBalancer
listNetworkServiceProviders
listInfrastructure
listUsageRecords
deleteVolume
enableUser
listZonesMetrics
extractTemplate
#125 ?suspendProject
getApiLimit
#128deleteStorageNetworkIpRange
addVmwareDc
updateIsoPermissions
registerTemplate
#125deleteVPCOffering
addStratosphereSsp
updateNuageVspDevice
deleteNetworkACL
createStoragePool
findStoragePoolsForMigration
addOpenDaylightController
createZone
disableCiscoNexusVSM
createStorageNetworkIpRange
listDomainChildren
assignToGlobalLoadBalancerRule
configureOvsElement
addImageStoreS3
createPhysicalNetwork
listAutoScaleVmGroups
createFirewallRule
createVolume
listF5LoadBalancerNetworks
listVMSnapshot
updatePod
attachIso
listBaremetalDhcp
tmMigrateVirtualMachine
enableStorageMaintenance
ldapRemove
createUser
#99deleteBaremetalRct
createVpnGateway
addResourceDetail
createVMSnapshot
listVpnUsers
deleteLoadBalancer
deleteIpForwardingRule
addRegion
generateUsageRecords
updateRolePermission
cancelStorageMaintenance
destroyRouter
updateSnapshotPolicy
listImageStores
deleteAccount
createCounter
disableOutOfBandManagementForCluster
addCluster
deleteTrafficMonitor
activateProject
deleteSslCert
listDedicatedHosts
deleteAutoScaleVmGroup
listPaloAltoFirewalls
updateLoadBalancerRule
deleteAlerts
enableAccount
#102createAutoScaleVmProfile
listLBStickinessPolicies
addUcsManager
reconnectHost
deleteProject
listNetscalerLoadBalancers
addNetscalerLoadBalancer
listIsoPermissions
createLoadBalancer
listBaremetalPxeServers
addPaloAltoFirewall
createPrivateGateway
listLoadBalancerRules
getUser
deleteFirewallRule
uploadSslCert
createVpnCustomerGateway
listCiscoNexusVSMs
addVpnUser
addBaremetalHost
deleteRolePermission
updateRemoteAccessVpn
updateVPCOffering
updateEgressFirewallRule
listOsCategories
removeFromGlobalLoadBalancerRule
listCapacity
updateServiceOffering
createNetworkACLList
VPC
VLAN
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.