コード例 #1
0
ファイル: deletemetadata.go プロジェクト: jc7998/rack
func (command *commandDeleteMetadata) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsDeleteMetadata)
	containerName := params.containerName
	objectName := params.objectName

	currentMetadata, err := objects.Get(command.Ctx.ServiceClient, containerName, objectName, nil).ExtractMetadata()
	if err != nil {
		resource.Err = err
		return
	}

	for _, k := range params.metadataKeys {
		currentMetadata[k] = ""
	}

	updateOpts := osObjects.UpdateOpts{
		Metadata: currentMetadata,
	}
	updateResponse := objects.Update(command.Ctx.ServiceClient, containerName, objectName, updateOpts)
	if updateResponse.Err != nil {
		resource.Err = updateResponse.Err
		return
	}
	resource.Result = fmt.Sprintf("Successfully deleted metadata with keys [%s] from object [%s].\n", strings.Join(params.metadataKeys, ", "), objectName)
}
コード例 #2
0
ファイル: updatemetadata.go プロジェクト: nelsnelson/rack
func (command *commandUpdateMetadata) PreCSV(resource *handler.Resource) {
	resource.Result = map[string]interface{}{
		"Metadata": resource.Result,
	}
	resource.Keys = []string{"Metadata"}
	resource.FlattenMap("Metadata")
}
コード例 #3
0
func (command *commandUpdateMetadata) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsUpdateMetadata)

	updateOpts := osAccounts.UpdateOpts{
		Metadata: params.metadata,
	}
	updateResponse := accounts.Update(command.Ctx.ServiceClient, updateOpts)
	if updateResponse.Err != nil {
		resource.Err = updateResponse.Err
		return
	}

	metadata, err := accounts.Get(command.Ctx.ServiceClient).ExtractMetadata()
	if err != nil {
		resource.Err = err
		return
	}

	updatedMetadata := make(map[string]string, len(params.metadata))
	for k := range params.metadata {
		k = strings.Title(k)
		updatedMetadata[k] = metadata[k]
	}

	resource.Result = updatedMetadata
}
コード例 #4
0
ファイル: getschema.go プロジェクト: satyamkotakonda/rack
func (command *commandGetSchema) PreCSV(resource *handler.Resource) error {
	resource.Result = structs.Map(resource.Result)
	resource.FlattenMap("Attributes")
	resource.FlattenMap("Properties")
	resource.FlattenMap("SupportStatus")
	return nil
}
コード例 #5
0
ファイル: listevents.go プロジェクト: satyamkotakonda/rack
func (command *commandListEvents) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsListEvents)
	opts := params.opts
	stackName := params.stackName
	stackID := params.stackID
	resourceName := params.resourceName

	pager := stackevents.ListResourceEvents(command.Ctx.ServiceClient, stackName, stackID, resourceName, opts)

	pages, err := pager.AllPages()
	if err != nil {
		resource.Err = err
		return
	}
	info, err := osStackEvents.ExtractResourceEvents(pages)
	if err != nil {
		resource.Err = err
		return
	}
	result := make([]map[string]interface{}, len(info))
	for j, event := range info {
		result[j] = structs.Map(&event)
		result[j]["Time"] = event.Time
	}
	resource.Result = result
}
コード例 #6
0
ファイル: setmetadata.go プロジェクト: satyamkotakonda/rack
func (command *commandSetMetadata) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsSetMetadata)

	currentMetadata, err := accounts.Get(command.Ctx.ServiceClient).ExtractMetadata()
	if err != nil {
		resource.Err = err
		return
	}

	i := 0
	keys := make([]string, len(currentMetadata))
	for k := range currentMetadata {
		keys[i] = k
		i++
	}

	updateOpts := osAccounts.UpdateOpts{
		Metadata:       params.metadata,
		DeleteMetadata: keys,
	}
	updateResponse := accounts.Update(command.Ctx.ServiceClient, updateOpts)
	if updateResponse.Err != nil {
		resource.Err = updateResponse.Err
		return
	}

	metadata, err := accounts.Get(command.Ctx.ServiceClient).ExtractMetadata()
	if err != nil {
		resource.Err = err
		return
	}

	resource.Result = metadata
}
コード例 #7
0
ファイル: rebuild.go プロジェクト: satyamkotakonda/rack
func (command *commandRebuild) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsRebuild)
	opts := params.opts
	serverID := params.serverID
	server, err := servers.Rebuild(command.Ctx.ServiceClient, serverID, opts).Extract()
	if err != nil {
		resource.Err = err
		return
	}

	if params.wait {
		err = osServers.WaitForStatus(command.Ctx.ServiceClient, serverID, "ACTIVE", 600)
		if err != nil {
			resource.Err = err
			return
		}

		server, err = servers.Get(command.Ctx.ServiceClient, serverID).Extract()
		if err != nil {
			resource.Err = err
			return
		}
	}

	resource.Result = serverSingle(server)
}
コード例 #8
0
ファイル: list.go プロジェクト: satyamkotakonda/rack
func (command *commandList) Execute(resource *handler.Resource) {
	opts := resource.Params.(*paramsList).opts
	pager := osVolumes.List(command.Ctx.ServiceClient, opts)
	var volumes []map[string]interface{}
	err := pager.EachPage(func(page pagination.Page) (bool, error) {
		info, err := osVolumes.ExtractVolumes(page)
		if err != nil {
			return false, err
		}
		result := make([]map[string]interface{}, len(info))
		for j, volume := range info {
			result[j] = volumeSingle(&volume)
		}
		volumes = append(volumes, result...)
		return true, nil
	})
	if err != nil {
		resource.Err = err
		return
	}
	if len(volumes) == 0 {
		resource.Result = nil
	} else {
		resource.Result = volumes
	}
}
コード例 #9
0
func (command *commandListAddressesByNetwork) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsListAddressesByNetwork)
	pager := servers.ListAddressesByNetwork(command.Ctx.ServiceClient, params.serverID, params.network)
	var result []map[string]interface{}
	err := pager.EachPage(func(page pagination.Page) (bool, error) {
		addresses, err := servers.ExtractNetworkAddresses(page)
		if err != nil {
			return false, err
		}
		for _, address := range addresses {
			m := map[string]interface{}{
				"Type":    params.network,
				"Version": address.Version,
				"Address": address.Address,
			}
			result = append(result, m)
		}
		return true, nil
	})
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = result
}
コード例 #10
0
ファイル: delete.go プロジェクト: satyamkotakonda/rack
func (command *commandDelete) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsDelete)
	containerName := params.container
	objectName := params.object

	listOpts := osObjects.ListOpts{
		Prefix: objectName,
	}
	allPages, err := osObjects.List(command.Ctx.ServiceClient, containerName, listOpts).AllPages()
	if err != nil {
		resource.Err = err
		return
	}

	objectNames, err := osObjects.ExtractNames(allPages)
	if err != nil {
		resource.Err = err
		return
	}

	for _, thisName := range objectNames {
		rawResponse := osObjects.Delete(command.Ctx.ServiceClient, containerName, thisName, osObjects.DeleteOpts{})
		if rawResponse.Err != nil {
			resource.Err = rawResponse.Err
			return
		}
	}

	resource.Result = fmt.Sprintf("Deleted object [%s] from container [%s]", objectName, containerName)
}
コード例 #11
0
ファイル: list.go プロジェクト: pratikmallya/rack
func (command *commandGet) Execute(resource *handler.Resource) {
	buildids, err := buildinfo.Get(command.Ctx.ServiceClient).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = structs.Map(buildids)
}
コード例 #12
0
ファイル: setmetadata.go プロジェクト: satyamkotakonda/rack
func (command *commandSetMetadata) PreCSV(resource *handler.Resource) error {
	resource.Result = map[string]interface{}{
		"Metadata": resource.Result,
	}
	resource.Keys = []string{"Metadata"}
	resource.FlattenMap("Metadata")
	return nil
}
コード例 #13
0
ファイル: download.go プロジェクト: satyamkotakonda/rack
func (command *commandDownload) JSON(resource *handler.Resource) {
	bytes, err := ioutil.ReadAll(resource.Result.(io.Reader))
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = string(bytes)
}
コード例 #14
0
ファイル: get.go プロジェクト: smashwilson/rack
func (command *commandGet) Execute(resource *handler.Resource) {
	securityGroupRuleID := resource.Params.(*paramsGet).securityGroupRuleID
	securityGroupRule, err := securityGroupRules.Get(command.Ctx.ServiceClient, securityGroupRuleID).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = securityGroupRuleSingle(securityGroupRule)
}
コード例 #15
0
ファイル: adopt.go プロジェクト: reaperzn/rack
func (command *commandAdopt) Execute(resource *handler.Resource) {
	opts := resource.Params.(*paramsAdopt).opts
	result, err := stacks.Adopt(command.Ctx.ServiceClient, opts).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = stackSingle(result)
}
コード例 #16
0
ファイル: create.go プロジェクト: nelsnelson/rack
func (command *commandCreate) Execute(resource *handler.Resource) {
	opts := resource.Params.(*paramsCreate).opts
	volume, err := osVolumes.Create(command.Ctx.ServiceClient, opts).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = volumeSingle(volume)
}
コード例 #17
0
ファイル: create.go プロジェクト: ktbartholomew/rack
func (command *commandCreate) Execute(resource *handler.Resource) {
	createOpts := resource.Params.(*paramsCreate)
	imageID, err := osServers.CreateImage(command.Ctx.ServiceClient, createOpts.serverID, createOpts.opts).ExtractImageID()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = map[string]interface{}{"ID": imageID}
}
コード例 #18
0
ファイル: get.go プロジェクト: satyamkotakonda/rack
func (command *commandGet) Execute(resource *handler.Resource) {
	flavorID := resource.Params.(*paramsGet).flavor
	flavor, err := flavors.Get(command.Ctx.ServiceClient, flavorID).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = structs.Map(flavor)
}
コード例 #19
0
ファイル: updatemetadata.go プロジェクト: nelsnelson/rack
func (command *commandUpdateMetadata) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsUpdateMetadata)
	metadata, err := osServers.UpdateMetadata(command.Ctx.ServiceClient, params.serverID, params.opts).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = metadata
}
コード例 #20
0
ファイル: get.go プロジェクト: nelsnelson/rack
func (command *commandGet) Execute(resource *handler.Resource) {
	subnetID := resource.Params.(*paramsGet).subnetID
	subnet, err := subnets.Get(command.Ctx.ServiceClient, subnetID).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = subnetSingle(subnet)
}
コード例 #21
0
ファイル: delete.go プロジェクト: satyamkotakonda/rack
func (command *commandDelete) Execute(resource *handler.Resource) {
	portID := resource.Params.(*paramsDelete).portID
	err := ports.Delete(command.Ctx.ServiceClient, portID).ExtractErr()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = fmt.Sprintf("Successfully deleted port [%s]\n", portID)
}
コード例 #22
0
ファイル: create.go プロジェクト: smashwilson/rack
func (command *commandCreate) Execute(resource *handler.Resource) {
	opts := resource.Params.(*paramsCreate).opts
	snapshot, err := osSnapshots.Create(command.Ctx.ServiceClient, opts).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = snapshotSingle(snapshot)
}
コード例 #23
0
ファイル: get.go プロジェクト: satyamkotakonda/rack
func (command *commandGet) Execute(resource *handler.Resource) {
	networkID := resource.Params.(*paramsGet).networkID
	network, err := networks.Get(command.Ctx.ServiceClient, networkID).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = networkSingle(network)
}
コード例 #24
0
ファイル: get.go プロジェクト: satyamkotakonda/rack
func (command *commandGet) Execute(resource *handler.Resource) {
	serverID := resource.Params.(*paramsGet).server
	server, err := servers.Get(command.Context().ServiceClient, serverID).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = serverSingle(server)
}
コード例 #25
0
ファイル: delete.go プロジェクト: smashwilson/rack
func (command *commandDelete) Execute(resource *handler.Resource) {
	securityGroupID := resource.Params.(*paramsDelete).securityGroupID
	err := securityGroups.Delete(command.Ctx.ServiceClient, securityGroupID).ExtractErr()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = fmt.Sprintf("Successfully deleted security group [%s]\n", securityGroupID)
}
コード例 #26
0
ファイル: getmetadata.go プロジェクト: nelsnelson/rack
func (command *commandGetMetadata) Execute(resource *handler.Resource) {
	metadata, err := accounts.Get(command.Ctx.ServiceClient).ExtractMetadata()
	if err != nil {
		resource.Err = err
		return
	}

	resource.Result = metadata
}
コード例 #27
0
ファイル: get.go プロジェクト: smashwilson/rack
func (command *commandGet) Execute(resource *handler.Resource) {
	imageID := resource.Params.(*paramsGet).image
	image, err := images.Get(command.Ctx.ServiceClient, imageID).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = structs.Map(image)
}
コード例 #28
0
ファイル: resize.go プロジェクト: nelsnelson/rack
func (command *commandResize) Execute(resource *handler.Resource) {
	params := resource.Params.(*paramsResize)
	err := servers.Resize(command.Ctx.ServiceClient, params.serverID, params.opts).ExtractErr()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = fmt.Sprintf("Successfully resized instance [%s] to flavor [%s]\n", params.serverID, params.opts.FlavorRef)
}
コード例 #29
0
ファイル: create.go プロジェクト: satyamkotakonda/rack
func (command *commandCreate) Execute(resource *handler.Resource) {
	opts := resource.Params.(*paramsCreate).opts
	network, err := networks.Create(command.Ctx.ServiceClient, opts).Extract()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = networkSingle(network)
}
コード例 #30
0
ファイル: delete.go プロジェクト: nelsnelson/rack
func (command *commandDelete) Execute(resource *handler.Resource) {
	serverID := resource.Params.(*paramsDelete).server
	err := servers.Delete(command.Ctx.ServiceClient, serverID).ExtractErr()
	if err != nil {
		resource.Err = err
		return
	}
	resource.Result = fmt.Sprintf("Deleting instance [%s]\n", serverID)
}