jellyfish-aws 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bf77cd8fc8fabd0b19d311e173710184c6c89a76
4
- data.tar.gz: c06fe23acab65dfedb8259106a74617dbdcd3ad2
3
+ metadata.gz: 2e09924ce72253e783f269b2cc11712f461cb39f
4
+ data.tar.gz: e1d9c856ba4280164caaf97bc635658f146abaff
5
5
  SHA512:
6
- metadata.gz: b2a9cfc0908921eb936cb3dd7ca6b056f914e9a498db2623f707bd36b5e37c6caf3719d7363f16641d061f8ab7784fc25af9814a76552a268636df378df4da03
7
- data.tar.gz: 837d788aa0cb1c94801925de8d3933845673876efc07e6569f3759a1dbdc19bf1f13a46a5c6ccf4073fa398623f6c0d545773677e8c9b1de715ac7f1126856e3
6
+ metadata.gz: fe54fac50f8f5cf81091c647a43220f963b8fb5c5758bc9f2df0935d74f12c11ead07fcfcc012905f7bd137f6217e941707d5f5c8b8ae16a006297932dd0f1bc
7
+ data.tar.gz: cc4adc8b4a24ec6c0548f84570c9e48df59180e93b24edb3daf199bbe345de893ddec119af7f6bf0f579be4dea84e0583bcac5387192d54d74c7485250c7cd77
@@ -0,0 +1,43 @@
1
+ module JellyfishAws
2
+ class ProductType < ActiveRecord::Base
3
+ class Ec2 < ::ProductType
4
+ def self.load_product_types
5
+ return unless super
6
+
7
+ transaction do
8
+ [
9
+ set('EC2 Instance', 'd16d5017-6d6b-4775-958f-535f68b4cf04', provider_type: 'JellyfishAws::Provider::Aws')
10
+ ].each do |s|
11
+ create! s.merge!(type: 'JellyfishAws::ProductType::Ec2')
12
+ end
13
+ end
14
+ end
15
+
16
+ def description
17
+ 'Amazon Web Services Elastic Compute Cloud Instance'
18
+ end
19
+
20
+ def tags
21
+ ['ec2', 'server']
22
+ end
23
+
24
+ def product_questions
25
+ [
26
+ { name: :flavor_id, value_type: :string, field: :aws_ec2_flavors, required: true },
27
+ { name: :image_id, value_type: :string, field: :aws_ec2_images, required: true },
28
+ { name: :subnet_id, value_type: :string, field: :aws_subnets, required: true }
29
+ ]
30
+ end
31
+
32
+ def order_questions
33
+ [
34
+ { name: :zone_id, value_type: :string, field: :aws_zones, required: true }
35
+ ]
36
+ end
37
+
38
+ def service_class
39
+ 'JellyfishAws::Service::Ec2'.constantize
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,150 @@
1
+ module JellyfishAws
2
+ class Provider < ActiveRecord::Base
3
+ class Aws < ::Provider
4
+ def ec2_flavors
5
+ client.flavors.map do |f|
6
+ {
7
+ id: f.id, name: f.name, bits: f.bits, cores: f.cores, ram: f.ram,
8
+ label: [f.name, f.id].join(' - '), value: f.id
9
+ }
10
+ end
11
+ end
12
+
13
+ def ec2_images
14
+ case settings[:region]
15
+ when 'us-east-1'
16
+ [
17
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-1ecae776' },
18
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-12663b7a' },
19
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-aeb532c6' },
20
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-d05e75b8' },
21
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-f70cdd9c' },
22
+ { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-1ccae774' },
23
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-c08fcba8' },
24
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-d85e75b0' }
25
+ ]
26
+ when 'us-west-1'
27
+ [
28
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-e7527ed7' },
29
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-4dbf9e7d' },
30
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-d7450be7' },
31
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-5189a661' },
32
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-c3b3b1f3' },
33
+ { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-ff527ecf' },
34
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-5df2ab6d' },
35
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-6989a659' }
36
+ ]
37
+ when 'us-west-2'
38
+ [
39
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-d114f295' },
40
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-a540a5e1' },
41
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-b95b4ffc' },
42
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-df6a8b9b' },
43
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-3bee1c7f' },
44
+ { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-d514f291' },
45
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-fe8891bb' },
46
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-d16a8b95' }
47
+ ]
48
+ when 'eu-west-1'
49
+ [
50
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-a10897d6' },
51
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-25158352' },
52
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-e801af9f' },
53
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-47a23a30' },
54
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-68347d1f' },
55
+ { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-bf0897c8' },
56
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-17c44860' },
57
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-5da23a2a' }
58
+ ]
59
+ when 'eu-central-1'
60
+ [
61
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-a8221fb5' },
62
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-dafdcfc7' },
63
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-a22610bf' },
64
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-accff2b1' },
65
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-f64540eb' },
66
+ { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-ac221fb1' },
67
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-fc0033e1' },
68
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-b6cff2ab' }
69
+ ]
70
+ when 'ap-southeast-1'
71
+ [
72
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-68d8e93a' },
73
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-dc1c2b8e' },
74
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-84b392d6' },
75
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-96f1c1c4' },
76
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-b89093ea' },
77
+ { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-acd9e8fe' },
78
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-3cbe956e' },
79
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-e8f1c1ba' }
80
+ ]
81
+ when 'ap-northeast-1'
82
+ [
83
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-cbf90ecb' },
84
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-b1b458b1' },
85
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-d54a79d4' },
86
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-936d9d93' },
87
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-e69520e6' },
88
+ { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-27f90e27' },
89
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-5cb8a65d' },
90
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-8d6d9d8d' }
91
+ ]
92
+ when 'ap-southeast-2'
93
+ [
94
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-fd9cecc7' },
95
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-d3daace9' },
96
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-b90e6283' },
97
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-69631053' },
98
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-2d2d6b17' },
99
+ { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-ff9cecc5' },
100
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-ad0d7997' },
101
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-7163104b' }
102
+ ]
103
+ when 'sa-east-1'
104
+ [
105
+ { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-b52890a8' },
106
+ { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-09e25b14' },
107
+ { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-f102b6ec' },
108
+ { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-4d883350' },
109
+ { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-87f8779a' },
110
+ { label: 'Amazon Linux AMI 2015.03 (PV', value: 'ami-bb2890a6' },
111
+ { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-23912d3e' },
112
+ { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-55883348' }
113
+ ]
114
+ else
115
+ []
116
+ end
117
+ end
118
+
119
+ def subnets
120
+ client.subnets.map do |s|
121
+ {
122
+ id: s.subnet_id, name: s.cidr_block, cidr: s.cidr_block, vpc_id: s.vpc_id,
123
+ label: s.cidr_block, value: s.subnet_id
124
+ }
125
+ end
126
+ end
127
+
128
+ def availability_zones
129
+ client.describe_availability_zones.body['availabilityZoneInfo'].map do |az|
130
+ next unless client.region == az['regionName']
131
+ { label: az['zoneName'], value: az['zoneName'] }
132
+ end.compact
133
+ end
134
+
135
+ private
136
+
137
+ def client
138
+ @client ||= begin
139
+ credentials = {
140
+ provider: 'AWS',
141
+ aws_access_key_id: settings[:access_id],
142
+ aws_secret_access_key: settings[:secret_key],
143
+ region: settings[:region]
144
+ }
145
+ Fog::Compute.new credentials
146
+ end
147
+ end
148
+ end
149
+ end
150
+ end
@@ -0,0 +1,35 @@
1
+ module JellyfishAws
2
+ class RegisteredProvider < ActiveRecord::Base
3
+ class Aws < ::RegisteredProvider
4
+ def self.load_registered_providers
5
+ return unless super
6
+
7
+ transaction do
8
+ [
9
+ set('AWS', '1072ddc9-e04f-4d43-929b-8866ce7e6d3a')
10
+ ].each { |s| create! s.merge!(type: 'JellyfishAws::RegisteredProvider::Aws') }
11
+ end
12
+ end
13
+
14
+ def provider_class
15
+ 'JellyfishAws::Provider::Aws'.constantize
16
+ end
17
+
18
+ def description
19
+ 'Amazon Web Services'
20
+ end
21
+
22
+ def tags
23
+ ['aws']
24
+ end
25
+
26
+ def questions
27
+ [
28
+ { name: :access_id, value_type: :string, field: :text, label: 'Access ID', required: true },
29
+ { name: :secret_key, value_type: :password, field: :password, label: 'Secret Key', required: :if_new },
30
+ { name: :region, value_type: :string, field: :aws_regions, required: true }
31
+ ]
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,39 @@
1
+ module JellyfishAws
2
+ class Service < ActiveRecord::Base
3
+ class Ec2 < ::Service::Compute
4
+ def actions
5
+ actions = super.merge :terminate
6
+
7
+ # determine if action is available
8
+
9
+ actions
10
+ end
11
+
12
+ def provision
13
+ =begin
14
+ create key_pair name: service.uuid
15
+ create security group (one per project) name: project-{id}
16
+ create vpc (one per project) name: project-{id}
17
+ =end
18
+ end
19
+
20
+ def start
21
+
22
+ end
23
+
24
+ def stop
25
+
26
+ end
27
+
28
+ def terminate
29
+
30
+ end
31
+
32
+ private
33
+
34
+ def client
35
+ @client ||= provider.settings
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,10 @@
1
+ class NamespaceClasses < ActiveRecord::Migration
2
+ def up
3
+ Provider.where(type: 'Provider::Aws').update_all(type: 'JellyfishAws::Provider::Aws')
4
+ Service..where(type: 'Service::Ec2').update_all(type: 'JellyfishAws::Service::Ec2')
5
+ end
6
+
7
+ def down
8
+ raise ActiveRecord::IrreversibleMigration
9
+ end
10
+ end
@@ -1,3 +1,3 @@
1
1
  module JellyfishAws
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jellyfish-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Stack
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-16 00:00:00.000000000 Z
11
+ date: 2015-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -120,12 +120,13 @@ files:
120
120
  - Rakefile
121
121
  - app/controllers/jellyfish_aws/application_controller.rb
122
122
  - app/controllers/jellyfish_aws/providers_controller.rb
123
- - app/models/product_type/ec2.rb
124
- - app/models/provider/aws.rb
125
- - app/models/registered_provider/aws.rb
126
- - app/models/service/ec2.rb
123
+ - app/models/jellyfish_aws/product_type/ec2.rb
124
+ - app/models/jellyfish_aws/provider/aws.rb
125
+ - app/models/jellyfish_aws/registered_provider/aws.rb
126
+ - app/models/jellyfish_aws/service/ec2.rb
127
127
  - app/policies/aws_policy.rb
128
128
  - config/routes.rb
129
+ - db/migrate/20150917174153_namespace_classes.rb
129
130
  - lib/jellyfish-aws.rb
130
131
  - lib/jellyfish_aws.rb
131
132
  - lib/jellyfish_aws/engine.rb
@@ -1,41 +0,0 @@
1
- class ProductType < ActiveRecord::Base
2
- class Ec2 < ProductType
3
- def self.load_product_types
4
- return unless super
5
-
6
- transaction do
7
- [
8
- set('EC2 Instance', 'd16d5017-6d6b-4775-958f-535f68b4cf04', provider_type: 'Provider::Aws')
9
- ].each do |s|
10
- create! s.merge!(type: 'ProductType::Ec2')
11
- end
12
- end
13
- end
14
-
15
- def description
16
- 'Amazon Web Services Elastic Compute Cloud Instance'
17
- end
18
-
19
- def tags
20
- ['ec2', 'server']
21
- end
22
-
23
- def product_questions
24
- [
25
- { name: :flavor_id, value_type: :string, field: :aws_ec2_flavors, required: true },
26
- { name: :image_id, value_type: :string, field: :aws_ec2_images, required: true },
27
- { name: :subnet_id, value_type: :string, field: :aws_subnets, required: true }
28
- ]
29
- end
30
-
31
- def order_questions
32
- [
33
- { name: :zone_id, value_type: :string, field: :aws_zones, required: true }
34
- ]
35
- end
36
-
37
- def service_class
38
- 'Service::Ec2'.constantize
39
- end
40
- end
41
- end
@@ -1,148 +0,0 @@
1
- class Provider < ActiveRecord::Base
2
- class Aws < Provider
3
- def ec2_flavors
4
- client.flavors.map do |f|
5
- {
6
- id: f.id, name: f.name, bits: f.bits, cores: f.cores, ram: f.ram,
7
- label: [f.name, f.id].join(' - '), value: f.id
8
- }
9
- end
10
- end
11
-
12
- def ec2_images
13
- case settings[:region]
14
- when 'us-east-1'
15
- [
16
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-1ecae776' },
17
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-12663b7a' },
18
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-aeb532c6' },
19
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-d05e75b8' },
20
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-f70cdd9c' },
21
- { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-1ccae774' },
22
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-c08fcba8' },
23
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-d85e75b0' }
24
- ]
25
- when 'us-west-1'
26
- [
27
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-e7527ed7' },
28
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-4dbf9e7d' },
29
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-d7450be7' },
30
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-5189a661' },
31
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-c3b3b1f3' },
32
- { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-ff527ecf' },
33
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-5df2ab6d' },
34
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-6989a659' }
35
- ]
36
- when 'us-west-1'
37
- [
38
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-d114f295' },
39
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-a540a5e1' },
40
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-b95b4ffc' },
41
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-df6a8b9b' },
42
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-3bee1c7f' },
43
- { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-d514f291' },
44
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-fe8891bb' },
45
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-d16a8b95' }
46
- ]
47
- when 'eu-west-1'
48
- [
49
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-a10897d6' },
50
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-25158352' },
51
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-e801af9f' },
52
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-47a23a30' },
53
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-68347d1f' },
54
- { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-bf0897c8' },
55
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-17c44860' },
56
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-5da23a2a' }
57
- ]
58
- when 'eu-central-1'
59
- [
60
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-a8221fb5' },
61
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-dafdcfc7' },
62
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-a22610bf' },
63
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-accff2b1' },
64
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-f64540eb' },
65
- { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-ac221fb1' },
66
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-fc0033e1' },
67
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-b6cff2ab' }
68
- ]
69
- when 'ap-southeast-1'
70
- [
71
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-68d8e93a' },
72
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-dc1c2b8e' },
73
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-84b392d6' },
74
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-96f1c1c4' },
75
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-b89093ea' },
76
- { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-acd9e8fe' },
77
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-3cbe956e' },
78
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-e8f1c1ba' }
79
- ]
80
- when 'ap-northeast-1'
81
- [
82
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-cbf90ecb' },
83
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-b1b458b1' },
84
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-d54a79d4' },
85
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-936d9d93' },
86
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-e69520e6' },
87
- { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-27f90e27' },
88
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-5cb8a65d' },
89
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-8d6d9d8d' }
90
- ]
91
- when 'ap-southeast-2'
92
- [
93
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-fd9cecc7' },
94
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-d3daace9' },
95
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-b90e6283' },
96
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-69631053' },
97
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-2d2d6b17' },
98
- { label: 'Amazon Linux AMI 2015.03 (PV)', value: 'ami-ff9cecc5' },
99
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-ad0d7997' },
100
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-7163104b' }
101
- ]
102
- when 'sa-east-1'
103
- [
104
- { label: 'Amazon Linux AMI 2015.03 (HVM), SSD Volume Type', value: 'ami-b52890a8' },
105
- { label: 'Red Hat Enterprise Linux 7.1 (HVM), SSD Volume Type', value: 'ami-09e25b14' },
106
- { label: 'SUSE Linux Enterprise Server 12 (HVM), SSD Volume Type', value: 'ami-f102b6ec' },
107
- { label: 'Ubuntu Server 14.04 LTS (HVM), SSD Volume Type', value: 'ami-4d883350' },
108
- { label: 'Microsoft Windows Server 2012 R2 Base', value: 'ami-87f8779a' },
109
- { label: 'Amazon Linux AMI 2015.03 (PV', value: 'ami-bb2890a6' },
110
- { label: 'SUSE Linux Enterprise Server 11 SP3 (PV), SSD Volume Type', value: 'ami-23912d3e' },
111
- { label: 'Ubuntu Server 14.04 LTS (PV), SSD Volume Type', value: 'ami-55883348' }
112
- ]
113
- else
114
- []
115
- end
116
- end
117
-
118
- def subnets
119
- client.subnets.map do |s|
120
- {
121
- id: s.subnet_id, name: s.cidr_block, cidr: s.cidr_block, vpc_id: s.vpc_id,
122
- label: s.cidr_block, value: s.subnet_id
123
- }
124
- end
125
- end
126
-
127
- def availability_zones
128
- client.describe_availability_zones.body['availabilityZoneInfo'].map do |az|
129
- next unless client.region == az['regionName']
130
- { label: az['zoneName'], value: az['zoneName'] }
131
- end.compact
132
- end
133
-
134
- private
135
-
136
- def client
137
- @client ||= begin
138
- credentials = {
139
- provider: 'AWS',
140
- aws_access_key_id: settings[:access_id],
141
- aws_secret_access_key: settings[:secret_key],
142
- region: settings[:region]
143
- }
144
- Fog::Compute.new credentials
145
- end
146
- end
147
- end
148
- end
@@ -1,33 +0,0 @@
1
- class RegisteredProvider < ActiveRecord::Base
2
- class Aws < RegisteredProvider
3
- def self.load_registered_providers
4
- return unless super
5
-
6
- transaction do
7
- [
8
- set('AWS', '1072ddc9-e04f-4d43-929b-8866ce7e6d3a')
9
- ].each { |s| create! s.merge!(type: 'RegisteredProvider::Aws') }
10
- end
11
- end
12
-
13
- def provider_class
14
- 'Provider::Aws'.constantize
15
- end
16
-
17
- def description
18
- 'Amazon Web Services'
19
- end
20
-
21
- def tags
22
- ['aws']
23
- end
24
-
25
- def questions
26
- [
27
- { name: :access_id, value_type: :string, field: :text, label: 'Access ID', required: true },
28
- { name: :secret_key, value_type: :password, field: :password, label: 'Secret Key', required: :if_new },
29
- { name: :region, value_type: :string, field: :aws_regions, required: true }
30
- ]
31
- end
32
- end
33
- end
@@ -1,37 +0,0 @@
1
- class Service < ActiveRecord::Base
2
- class Ec2 < Service::Compute
3
- def actions
4
- actions = super.merge :terminate
5
-
6
- # determine if action is available
7
-
8
- actions
9
- end
10
-
11
- def provision
12
- =begin
13
- create key_pair name: service.uuid
14
- create security group (one per project) name: project-{id}
15
- create vpc (one per project) name: project-{id}
16
- =end
17
- end
18
-
19
- def start
20
-
21
- end
22
-
23
- def stop
24
-
25
- end
26
-
27
- def terminate
28
-
29
- end
30
-
31
- private
32
-
33
- def client
34
- @client ||= provider.settings
35
- end
36
- end
37
- end