This repository has been archived by the owner on Jun 20, 2023. It is now read-only.
/
getimages.go
93 lines (80 loc) · 2.58 KB
/
getimages.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package awsimage
import (
aws "github.com/nikhilsbhat/neuron-cloudy/cloud/aws/interface"
)
// GetImageInput can hold all the required details for fecthing the details of image
type GetImageInput struct {
Kind string `json:"Kind"`
ImageIds []string `json:"ImageIds"`
GetRaw bool `json:"GetRaw"`
}
// GetImage will fetch the details of the images, who's Id is passed to it.
func (i *GetImageInput) GetImage(con aws.EstablishConnectionInput) ([]ImageResponse, error) {
ec2, sesErr := con.EstablishConnection()
if sesErr != nil {
return nil, sesErr
}
// desribing image to check if image exists
imageResult, imageErr := ec2.DescribeImages(
&aws.DescribeComputeInput{
ImageIds: i.ImageIds,
},
)
if imageErr != nil {
return nil, imageErr
}
imageResponse := make([]ImageResponse, 0)
for _, img := range imageResult.Images {
if i.GetRaw == true {
imageResponse = append(imageResponse, ImageResponse{GetImageRaw: img})
} else {
resp := new(ImageResponse)
resp.Name = *img.Name
resp.ImageId = *img.ImageId
resp.CreationDate = *img.CreationDate
resp.State = *img.State
resp.IsPublic = *img.Public
snap := new(SnapshotDetails)
snap.SnapshotId = *img.BlockDeviceMappings[0].Ebs.SnapshotId
snap.VolumeType = *img.BlockDeviceMappings[0].Ebs.VolumeType
snap.VolumeSize = *img.BlockDeviceMappings[0].Ebs.VolumeSize
resp.SnapShot = *snap
imageResponse = append(imageResponse, *resp)
}
}
return imageResponse, nil
}
// GetAllImage will get the details of all images present under this account in the entered region.
func (i *GetImageInput) GetAllImage(con aws.EstablishConnectionInput) ([]ImageResponse, error) {
ec2, seserr := con.EstablishConnection()
if seserr != nil {
return nil, seserr
}
// desribing image to check if image exists
result, err := ec2.DescribeAllImages(
&aws.DescribeComputeInput{},
)
if err != nil {
return nil, err
}
imageResponse := make([]ImageResponse, 0)
for _, img := range result.Images {
if i.GetRaw == true {
imageResponse = append(imageResponse, ImageResponse{GetImageRaw: img})
} else {
resp := new(ImageResponse)
resp.Name = *img.Name
resp.ImageId = *img.ImageId
resp.CreationDate = *img.CreationDate
resp.State = *img.State
resp.IsPublic = *img.Public
snap := new(SnapshotDetails)
snap.SnapshotId = *img.BlockDeviceMappings[0].Ebs.SnapshotId
snap.VolumeType = *img.BlockDeviceMappings[0].Ebs.VolumeType
snap.VolumeSize = *img.BlockDeviceMappings[0].Ebs.VolumeSize
resp.SnapShot = *snap
imageResponse = append(imageResponse, *resp)
}
}
return imageResponse, nil
}