Skip to content

Latest commit

 

History

History
649 lines (598 loc) · 49.1 KB

README.md

File metadata and controls

649 lines (598 loc) · 49.1 KB

Go API client for hyperstack

Leverage the Infrahub API and Hyperstack platform to easily create, manage, and scale powerful GPU virtual machines and their associated resources.

Access this SDK to automate the deployment of your workloads and streamline your infrastructure management.

To contribute, please raise an issue with a bug report, feature request, feedback, or general inquiry.

Overview

This API client was generated by the OpenAPI Generator project. By using the OpenAPI-spec from a remote server, you can easily generate an API client.

  • API version: 1.0
  • Package version: v1.25.0-alpha
  • Generator version: 7.10.0
  • Build package: org.openapitools.codegen.languages.GoClientCodegen

Installation

Install the following dependencies:

go get github.com/stretchr/testify/assert
go get golang.org/x/net/context

Put the package under your project folder and add the following in import:

import hyperstack "github.com/NexGenCloud/hyperstack-sdk-go/hyperstack"

To use a proxy, set the environment variable HTTP_PROXY:

os.Setenv("HTTP_PROXY", "http://proxy_name:proxy_port")

Configuration of Server URL

Default configuration comes with Servers field that contains server objects as defined in the OpenAPI specification.

Select Server Configuration

For using other server than the one defined on index 0 set context value hyperstack.ContextServerIndex of type int.

ctx := context.WithValue(context.Background(), hyperstack.ContextServerIndex, 1)

Templated Server URL

Templated server URL is formatted using default variables from configuration or from context value hyperstack.ContextServerVariables of type map[string]string.

ctx := context.WithValue(context.Background(), hyperstack.ContextServerVariables, map[string]string{
	"basePath": "v2",
})

Note, enum values are always validated and all unused variables are silently ignored.

URLs Configuration per Operation

Each operation can use different server URL defined using OperationServers map in the Configuration. An operation is uniquely identified by "{classname}Service.{nickname}" string. Similar rules for overriding default operation server index and variables applies by using hyperstack.ContextOperationServerIndices and hyperstack.ContextOperationServerVariables context maps.

ctx := context.WithValue(context.Background(), hyperstack.ContextOperationServerIndices, map[string]int{
	"{classname}Service.{nickname}": 2,
})
ctx = context.WithValue(context.Background(), hyperstack.ContextOperationServerVariables, map[string]map[string]string{
	"{classname}Service.{nickname}": {
		"port": "8443",
	},
})

Documentation for API Endpoints

All URIs are relative to https://infrahub-api.nexgencloud.com/v1

Class Method HTTP request Description
AliveAPI GetAlive Get /billing/alive GET: Alive
ApiKeyAPI DeleteApiKey Delete /api-key/{api_key_id} Delete API Key
ApiKeyAPI GenerateApiKey Post /api-key/generate Generate API Key
ApiKeyAPI RetrieveApiKeys Get /api-key Retrieve API Keys
ApiKeyAPI UpdateApiKey Put /api-key/{api_key_id} Update API Key
AssigningMemberRoleAPI AssignRbacRole Put /auth/users/{user_id}/assign-roles Assign RBAC Role
AssigningMemberRoleAPI RemoveRbacRoleFromUser Delete /auth/users/{user_id}/roles Remove RBAC Role From User
AuthAPI RetrieveAuthenticatedUserDetails Get /auth/me Retrieve Authenticated User Details
BillingAPI GetAllThresholdsForOrganization Get /billing/billing/threshold GET: All Thresholds for Organization
BillingAPI GetBillingUsage Get /billing/billing/usage GET: Billing usage
BillingAPI GetLastDayCost Get /billing/billing/last-day-cost GET: Last Day Cost
BillingAPI RetrieveBillingHistoryForASpecificBillingCycle Get /billing/billing/history Retrieve Billing History for a specific Billing Cycle
BillingAPI RetrieveBillingHistoryOfASpecificSnapshotForASpecificBillingCycle Get /billing/billing/history/snapshot/{snapshot_id} Retrieve Billing History of a Specific Snapshot for a specific Billing Cycle
BillingAPI RetrieveBillingHistoryOfASpecificVirtualMachineForASpecificBillingCycle Get /billing/billing/history/virtual-machine/{vm_id} Retrieve Billing History of a Specific Virtual Machine for a specific Billing Cycle
BillingAPI RetrieveBillingHistoryOfASpecificVolumeForASpecificBillingCycle Get /billing/billing/history/volume/{volume_id} Retrieve Billing History of a Specific Volume for a specific Billing Cycle
BillingAPI RetrieveBillingHistoryOfContractForASpecificBillingCycle Get /billing/billing/history/contract Retrieve Billing History of Contract for a specific Billing Cycle
BillingAPI RetrieveBillingHistoryOfSnapshotForASpecificBillingCycle Get /billing/billing/history/snapshot Retrieve Billing History of Snapshot for a specific Billing Cycle
BillingAPI RetrieveBillingHistoryOfVirtualMachineForASpecificBillingCycle Get /billing/billing/history/virtual-machine Retrieve Billing History of Virtual Machine for a specific Billing Cycle
BillingAPI RetrieveBillingHistoryOfVolumeForASpecificBillingCycle Get /billing/billing/history/volume Retrieve Billing History of Volume for a specific Billing Cycle
BillingAPI RetrieveHourlyCostDatapointsOfASpecificSnapshotForASpecificBillingCycle Get /billing/billing/history/snapshot/{snapshot_id}/graph Retrieve hourly cost datapoints of a Specific Snapshot for a specific billing cycle
BillingAPI RetrieveHourlyCostDatapointsOfASpecificVirtualMachineForASpecificBillingCycle Get /billing/billing/history/virtual-machine/{vm_id}/graph Retrieve hourly cost datapoints of a Specific Virtual Machine for a specific billing cycle
BillingAPI RetrieveHourlyCostDatapointsOfASpecificVolumeForASpecificBillingCycle Get /billing/billing/history/volume/{volume_id}/graph Retrieve hourly cost datapoints of a Specific Volume for a specific billing cycle
BillingAPI RetrieveSubResourcesHistoricalCostDatapointsOfAVirtual Get /billing/billing/virtual-machine/{vm_id}/sub-resource/graph Retrieve Sub-Resources Historical Cost datapoints of a Virtual
BillingAPI RetrieveTotalCostsAndNonDiscountCostsForSubResources Get /billing/billing/virtual-machine/{vm_id}/sub-resource Retrieve Total Costs and Non Discount Costs for Sub Resources
BillingAPI RetrieveVmBillingEventsHistory Get /billing/billing/virtual-machine/{vm_id}/billing-events Retrieve VM billing events history
BillingAPI RetrieveVolumeBillingEventsHistory Get /billing/billing/volume/{volume_id}/billing-events Retrieve Volume billing events history
BillingAPI UpdateSubscribeOrUnsubscribeNotificationThreshold Put /billing/billing/threshold/{threshold_id} Update: Subscribe or Unsubscribe Notification Threshold
CalculateAPI RetrieveBillingRateForResource Get /pricebook/calculate/resource/{resource_type}/{id} Retrieve Billing Rate for Resource
CallbacksAPI AttachCallbackToVirtualMachine Post /core/virtual-machines/{id}/attach-callback Attach callback to virtual machine
CallbacksAPI AttachCallbackToVolume Post /core/volumes/{id}/attach-callback Attach callback to volume
CallbacksAPI DeleteVirtualMachineCallback Delete /core/virtual-machines/{id}/delete-callback Delete virtual machine callback
CallbacksAPI DeleteVolumeCallback Delete /core/volumes/{id}/delete-callback Delete volume callback
CallbacksAPI UpdateVirtualMachineCallback Put /core/virtual-machines/{id}/update-callback Update virtual machine callback
CallbacksAPI UpdateVolumeCallback Put /core/volumes/{id}/update-callback Update volume callback
ClusterEventsAPI FetchAllOfAClusterEvents Get /core/clusters/{cluster_id}/events Fetch all of a cluster events
ClustersAPI CreateCluster Post /core/clusters Create Cluster
ClustersAPI DeleteACluster Delete /core/clusters/{id} Delete a cluster
ClustersAPI FetchClusterNameAvailability Get /core/clusters/name-availability/{name} Fetch cluster name availability
ClustersAPI GetClusterVersions Get /core/clusters/versions GET Cluster Versions
ClustersAPI GettingClusterDetail Get /core/clusters/{id} Getting Cluster Detail
ClustersAPI ListClusters Get /core/clusters List Clusters
ComplianceAPI CreateCompliance Post /core/compliance Create compliance
ComplianceAPI DeleteACompliance Delete /core/compliance/{gpu_model} Delete a compliance
ComplianceAPI RetrieveGpuCompliance Get /core/compliance Retrieve GPU compliance
ComplianceAPI UpdateACompliance Put /core/compliance Update a compliance
CreditAPI GetViewCreditAndThreshold Get /billing/user-credit/credit GET: View credit and threshold
CustomerContractAPI ListContracts Get /pricebook/contracts List Contracts
CustomerContractAPI RetrieveContractDetails Get /pricebook/contracts/{contract_id} Retrieve Contract Details
CustomerContractAPI RetrieveGpuAllocationGraphForContract Get /pricebook/contracts/{contract_id}/gpu_allocation_graph Retrieve GPU Allocation Graph for Contract
DashboardAPI RetrieveDashboard Get /core/dashboard Retrieve Dashboard
DeploymentAPI DeleteDeployment Delete /core/marketplace/deployments/{id} Delete Deployment
DeploymentAPI DetailsOfDeploymentById Get /core/marketplace/deployments/{id} Details of Deployment by ID
DeploymentAPI ListDeployments Get /core/marketplace/deployments List Deployments
DeploymentAPI StartDeployment Post /core/marketplace/deployments Start Deployment
EnvironmentAPI CreateEnvironment Post /core/environments Create environment
EnvironmentAPI DeleteEnvironment Delete /core/environments/{id} Delete environment
EnvironmentAPI ListEnvironments Get /core/environments List environments
EnvironmentAPI RetrieveEnvironment Get /core/environments/{id} Retrieve environment
EnvironmentAPI UpdateEnvironment Put /core/environments/{id} Update environment
FirewallAttachmentAPI AttachFirewallsToVms Post /core/firewalls/{firewall_id}/update-attachments Attach Firewalls to VMs
FirewallsAPI AddFirewallRuleToFirewall Post /core/firewalls/{firewall_id}/firewall-rules Add firewall rule to firewall
FirewallsAPI CreateFirewall Post /core/firewalls Create firewall
FirewallsAPI DeleteFirewall Delete /core/firewalls/{id} Delete firewall
FirewallsAPI DeleteFirewallRulesFromFirewall Delete /core/firewalls/{firewall_id}/firewall-rules/{firewall_rule_id} Delete firewall rules from firewall
FirewallsAPI ListFirewalls Get /core/firewalls List firewalls
FirewallsAPI RetrieveFirewallDetails Get /core/firewalls/{id} Retrieve firewall details
FlavorAPI ListFlavors Get /core/flavors List Flavors
FloatingIpAPI AttachPublicIpToVirtualMachine Post /core/virtual-machines/{id}/attach-floatingip Attach public IP to virtual machine
FloatingIpAPI DetachPublicIpFromVirtualMachine Post /core/virtual-machines/{id}/detach-floatingip Detach public IP from virtual machine
GpuAPI ListGpus Get /core/gpus List GPUs
ImageAPI DeleteAnImage Delete /core/images/{id} Delete an image
ImageAPI FetchNameAvailabilityForImages Get /core/image/name-availability/{name} Fetch name availability for Images
ImageAPI GetPrivateImageDetails Get /core/images/{id} Get Private Image Details
ImageAPI ListImages Get /core/images List Images
InviteAPI DeleteInvite Delete /auth/invites/{id} Delete Invite
InviteAPI InviteUserToOrganization Post /auth/invites Invite User to Organization
InviteAPI ListInvites Get /auth/invites List Invites
KeypairAPI DeleteKeyPair Delete /core/keypair/{id} Delete key pair
KeypairAPI ImportKeyPair Post /core/keypairs Import key pair
KeypairAPI ListKeyPairs Get /core/keypairs List key pairs
KeypairAPI UpdateKeyPairName Put /core/keypair/{id} Update key pair name
OrganizationAPI RemoveOrganizationMember Post /auth/organizations/remove-member Remove Organization Member
OrganizationAPI RetrieveOrganizationInformation Get /auth/organizations Retrieve Organization Information
OrganizationAPI UpdateOrganizationInformation Put /auth/organizations/update Update Organization Information
PaymentAPI GetViewPaymentDetails Get /billing/payment/payment-details GET: View payment details
PaymentAPI PostInitiatePayment Post /billing/payment/payment-initiate POST: Initiate payment
PermissionAPI ListPermissions Get /auth/permissions List Permissions
PolicyAPI ListPolicies Get /auth/policies List Policies
PricebookAPI RetrivePricebook Get /pricebook
ProfileAPI CreateProfile Post /core/profiles Create profile
ProfileAPI DeleteProfile Delete /core/profiles/{id} Delete profile
ProfileAPI ListProfiles Get /core/profiles List profiles
ProfileAPI RetrieveProfileDetails Get /core/profiles/{id} Retrieve profile details
RbacRoleAPI CreateRbacRole Post /auth/roles Create RBAC Role
RbacRoleAPI DeleteRbacRole Delete /auth/roles/{id} Delete RBAC Role
RbacRoleAPI ListRbacRoles Get /auth/roles List RBAC Roles
RbacRoleAPI RetrieveRbacRoleDetails Get /auth/roles/{id} Retrieve RBAC Role Details
RbacRoleAPI UpdateRbacRole Put /auth/roles/{id} Update RBAC Role
RegionAPI ListRegions Get /core/regions List regions
SecurityRulesAPI ListFirewallRuleProtocols Get /core/sg-rules-protocols List firewall rule protocols
SnapshotEventsAPI FetchAllEventsForASnapshot Get /core/snapshots/{snapshot_id}/events Fetch all events for a snapshot
SnapshotsAPI CreateAnImageFromASnapshot Post /core/snapshots/{snapshot_id}/image Create an image from a snapshot
SnapshotsAPI DeleteSnapshot Delete /core/snapshots/{id} Delete snapshot
SnapshotsAPI FetchSnapshotNameAvailability Get /core/snapshots/name-availability/{name} Fetch snapshot name availability
SnapshotsAPI RestoreASnapshot Post /core/snapshots/{id}/restore Restore a snapshot
SnapshotsAPI RetrieveASnapshot Get /core/snapshots/{id} Retrieve a snapshot
SnapshotsAPI RetrieveListOfSnapshotsWithPagination Get /core/snapshots Retrieve list of snapshots with pagination
StockAPI RetrieveGpuStocks Get /core/stocks Retrieve GPU stocks
TemplateAPI CreateTemplate Post /core/marketplace/templates Create template
TemplateAPI DeleteTemplate Delete /core/marketplace/templates/{id} Delete template
TemplateAPI ListTemplates Get /core/marketplace/templates List templates
TemplateAPI RetrieveTemplateDetails Get /core/marketplace/templates/{id} Retrieve template details
TemplateAPI UpdateTemplate Put /core/marketplace/templates/{id} Update template
UserAPI GetFetchUserInfo Get /billing/user/info GET: Fetch User Info
UserAPI PostInsertUserInfo Post /billing/user/info POST: Insert user info
UserAPI PutUpdateUserInfo Put /billing/user/info PUT: Update user info
UserDetailChoiceAPI RetrieveDefaultFlavorsAndImages Get /core/user/resources/defaults Retrieve Default Flavors and Images
UserPermissionAPI ListMyUserPermissions Get /auth/users/me/permissions List My User Permissions
UserPermissionAPI ListUserPermissions Get /auth/users/{id}/permissions List User Permissions
VirtualMachineAPI AddFirewallRuleToVirtualMachine Post /core/virtual-machines/{id}/sg-rules Add firewall rule to virtual machine
VirtualMachineAPI AttachFirewallsToAVirtualMachine Post /core/virtual-machines/{vm_id}/attach-firewalls Attach firewalls to a virtual machine
VirtualMachineAPI CreateSnapshotFromAVirtualMachine Post /core/virtual-machines/{vm_id}/snapshots Create snapshot from a virtual machine
VirtualMachineAPI CreateVirtualMachines Post /core/virtual-machines Create virtual machines
VirtualMachineAPI DeleteFirewallRuleFromVirtualMachine Delete /core/virtual-machines/{virtual_machine_id}/sg-rules/{sg_rule_id} Delete firewall rule from virtual machine
VirtualMachineAPI DeleteVirtualMachine Delete /core/virtual-machines/{id} Delete virtual machine
VirtualMachineAPI EditVirtualMachineLabels Put /core/virtual-machines/{virtual_machine_id}/label Edit virtual machine labels
VirtualMachineAPI FetchVirtualMachineNameAvailability Get /core/virtual-machines/name-availability/{name} Fetch virtual machine name availability
VirtualMachineAPI HardRebootVirtualMachine Get /core/virtual-machines/{id}/hard-reboot Hard reboot virtual machine
VirtualMachineAPI HibernateVirtualMachine Get /core/virtual-machines/{virtual_machine_id}/hibernate Hibernate virtual machine
VirtualMachineAPI ListVirtualMachines Get /core/virtual-machines List virtual machines
VirtualMachineAPI ResizeVirtualMachine Post /core/virtual-machines/{virtual_machine_id}/resize Resize virtual machine
VirtualMachineAPI RestoreVirtualMachineFromHibernation Get /core/virtual-machines/{virtual_machine_id}/hibernate-restore Restore virtual machine from hibernation
VirtualMachineAPI RetrieveVirtualMachineDetails Get /core/virtual-machines/{id} Retrieve virtual machine details
VirtualMachineAPI RetrieveVirtualMachinePerformanceMetrics Get /core/virtual-machines/{virtual_machine_id}/metrics Retrieve virtual machine performance metrics
VirtualMachineAPI RetrieveVirtualMachinesAssociatedWithAContract Get /core/virtual-machines/contract/{contract_id}/virtual-machines Retrieve virtual machines associated with a contract
VirtualMachineAPI StartVirtualMachine Get /core/virtual-machines/{id}/start Start virtual machine
VirtualMachineAPI StopVirtualMachine Get /core/virtual-machines/{id}/stop Stop virtual machine
VirtualMachineEventsAPI ListVirtualMachineEvents Get /core/virtual-machines/{virtual_machine_id}/events List virtual machine events
VncUrlAPI GetVncConsoleLink Get /core/virtual-machines/{virtual_machine_id}/console/{job_id} Get VNC Console Link
VncUrlAPI RequestInstanceConsole Get /core/virtual-machines/{id}/request-console Request Instance Console
VolumeAPI CreateVolume Post /core/volumes Create volume
VolumeAPI DeleteVolume Delete /core/volumes/{id} Delete volume
VolumeAPI FetchVolumeDetails Get /core/volume/{volume_id} Fetch Volume Details
VolumeAPI FetchVolumeNameAvailability Get /core/volume/name-availability/{name} Fetch volume name availability
VolumeAPI ListVolumeTypes Get /core/volume-types List volume types
VolumeAPI ListVolumes Get /core/volumes List volumes
VolumeAttachmentAPI AttachVolumesToVirtualMachine Post /core/virtual-machines/{virtual_machine_id}/attach-volumes Attach volumes to virtual machine
VolumeAttachmentAPI DetachVolumesFromVirtualMachine Post /core/virtual-machines/{virtual_machine_id}/detach-volumes Detach volumes from virtual machine

Documentation For Models

Documentation For Authorization

Authentication schemes defined for the API:

accessToken

  • Type: API key
  • API key parameter name: Authorization
  • Location: HTTP header

Note, each API key must be added to a map of map[string]APIKey where the key is: accessToken and passed in as the auth context for each request.

Example

auth := context.WithValue(
		context.Background(),
		hyperstack.ContextAPIKeys,
		map[string]hyperstack.APIKey{
			"accessToken": {Key: "API_KEY_STRING"},
		},
	)
r, err := client.Service.Operation(auth, args)

apiKey

  • Type: API key
  • API key parameter name: api_key
  • Location: HTTP header

Note, each API key must be added to a map of map[string]APIKey where the key is: apiKey and passed in as the auth context for each request.

Example

auth := context.WithValue(
		context.Background(),
		hyperstack.ContextAPIKeys,
		map[string]hyperstack.APIKey{
			"apiKey": {Key: "API_KEY_STRING"},
		},
	)
r, err := client.Service.Operation(auth, args)

Documentation for Utility Methods

Due to the fact that model structure members are all pointers, this package contains a number of utility functions to easily obtain pointers to values of basic types. Each of these functions takes a value of the given basic type and returns a pointer to it:

  • PtrBool
  • PtrInt
  • PtrInt32
  • PtrInt64
  • PtrFloat
  • PtrFloat32
  • PtrFloat64
  • PtrString
  • PtrTime

Author