package migrationAPI import ( "fmt" "net/http" ) type ( // MigratedVlans is the data for the MigrateVlansResponse MigratedVlans struct { VlansMigrated []MigratedVlansItem `json:"vlans_migrated" bson:"vlans_migrated"` VlansNotMigrated []MigratedVlansItem `json:"vlans_not_migrated" bson:"vlans_not_migrated"` } // MigratedVlansItem defines an individual entry in the MigratedVlans struct MigratedVlansItem struct { SourceVlan string `json:"source_vlan" bson:"source_vlan"` SourceZone string `json:"source_zone" bson:"source_zone"` DestinationVlan string `json:"destination_vlan" bson:"destination_vlan"` DestinationZone string `json:"destination_zone" bson:"destination_zone"` } ) // DeallocateIPs will deallocate the source DRACNet, SNet, and VMNet IPs for a device. // We proxy this DCX API to manage which IPs are deallocated. // // https://migration.nsi.rackspace.com/docs/#/Migrate/dcxDeallocateIPs func (c *Client) DeallocateIPs(mg string, device int, options ...*Options) (*DeallocateIPsResponse, error) { opts := processOptions(options...) uri := fmt.Sprintf("/dcx/deallocate_ips/%s/device/%d", mg, device) method := http.MethodPost req, err := c.newRequest(c.URL+uri, method, nil, opts) if err != nil { return nil, err } resp := new(DeallocateIPsResponse) return resp, c.do(req, resp, opts) } // MigrateVlans will migrate the VLANs for a device's environment in EM. // We proxy this DCX API to manage which VLANs are listed in the 'excluded' payload. // // https://migration.nsi.rackspace.com/docs/#/Migrate/dcxMigrateVlans func (c *Client) MigrateVlans(mg string, device int, options ...*Options) (*MigrateVlansResponse, error) { opts := processOptions(options...) uri := fmt.Sprintf("/dcx/migrate_vlans/%s/device/%d", mg, device) method := http.MethodPost req, err := c.newRequest(c.URL+uri, method, nil, opts) if err != nil { return nil, err } resp := new(MigrateVlansResponse) return resp, c.do(req, resp, opts) }