sumomo 0.8.14 → 0.8.16
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 +4 -4
- data/data/sumomo/custom_resources/ACMCertificate.js +32 -1
- data/data/sumomo/custom_resources/ACMCertificateWaiter.js +4 -0
- data/lib/sumomo/api.rb +6 -0
- data/lib/sumomo/ec2.rb +3 -0
- data/lib/sumomo/stack.rb +30 -0
- data/lib/sumomo/version.rb +1 -1
- data/lib/sumomo.rb +1 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 4b360df868147cde0facdac9c5ff2f76944db409ce8eb0fd8b0e9e4544b8d3fb
         | 
| 4 | 
            +
              data.tar.gz: 720f37705fc0f3d7f7555c3f9465229ed50472b75350671a6a163e2084fa9f94
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 397367ad6b32f8a982e22e7c4d43fa111e152c676a49f4b0fe328aab5ac865be88cb22c9a8c8b67a103f70e2a48dc3576c1e9ad38f848b25b328bae9bd1bf47c
         | 
| 7 | 
            +
              data.tar.gz: 455ae961e13af305fcc9f3b4ac29036837fa39c97a2cf8c8ec9bcaf190bd1bb7cd7b94ef9d564d57feef5d647e0fc7796f5178b7cf479d96b3afeaf42256131e
         | 
| @@ -4,6 +4,8 @@ var acm = new aws.ACM({region: cert_region}); | |
| 4 4 |  | 
| 5 5 | 
             
            var return_properties = {};
         | 
| 6 6 |  | 
| 7 | 
            +
            var retries = 0;
         | 
| 8 | 
            +
             | 
| 7 9 | 
             
            function extractRootDomain(domain)
         | 
| 8 10 | 
             
            {
         | 
| 9 11 | 
             
              var splitArr = domain.split('.');
         | 
| @@ -12,26 +14,55 @@ function extractRootDomain(domain) | |
| 12 14 | 
             
              //extracting the root domain here
         | 
| 13 15 | 
             
              if (arrLen > 2)
         | 
| 14 16 | 
             
              {
         | 
| 15 | 
            -
                  domain = splitArr | 
| 17 | 
            +
                  domain = splitArr.slice(1).join(".");
         | 
| 16 18 | 
             
              }
         | 
| 17 19 | 
             
              return domain;
         | 
| 18 20 | 
             
            }
         | 
| 19 21 |  | 
| 20 22 | 
             
            function wait_for_approval(domain_name, on_success, on_fail)
         | 
| 21 23 | 
             
            {
         | 
| 24 | 
            +
              console.log('read domain: ', domain_name);
         | 
| 22 25 | 
             
              get_domain(domain_name, function(data)
         | 
| 23 26 | 
             
              {
         | 
| 27 | 
            +
                console.log('loaded domain data: ');
         | 
| 28 | 
            +
                console.log(data);
         | 
| 29 | 
            +
             | 
| 24 30 | 
             
                var params = {
         | 
| 25 31 | 
             
                  CertificateArn: data.arn
         | 
| 26 32 | 
             
                };
         | 
| 27 33 |  | 
| 28 34 | 
             
                acm.describeCertificate(params, function(err, cert_data) {
         | 
| 35 | 
            +
                  console.log('received certificate data');
         | 
| 36 | 
            +
                  console.log(cert_data);
         | 
| 37 | 
            +
                  console.log(cert_data.Certificate.DomainValidationOptions);
         | 
| 38 | 
            +
                  console.log(cert_data.Certificate.DomainValidationOptions[0]);
         | 
| 39 | 
            +
             | 
| 40 | 
            +
             | 
| 29 41 | 
             
                  if (err)
         | 
| 30 42 | 
             
                  {
         | 
| 31 43 | 
             
                    on_fail(err);
         | 
| 32 44 | 
             
                  }
         | 
| 33 45 | 
             
                  else
         | 
| 34 46 | 
             
                  {
         | 
| 47 | 
            +
                    if (!cert_data.Certificate.DomainValidationOptions[0].ResourceRecord)
         | 
| 48 | 
            +
                    {
         | 
| 49 | 
            +
                      // damn AWS now does not return this information immediately
         | 
| 50 | 
            +
                      // and we have to wait for it.
         | 
| 51 | 
            +
                      return setTimeout(function()
         | 
| 52 | 
            +
                      {
         | 
| 53 | 
            +
                        console.log('no ResourceRecord found, retrying...', "attempts:", retries);
         | 
| 54 | 
            +
                        if (retries < 60)
         | 
| 55 | 
            +
                        {
         | 
| 56 | 
            +
                          wait_for_approval(domain_name, on_success, on_fail);
         | 
| 57 | 
            +
                          retries += 1;
         | 
| 58 | 
            +
                        }
         | 
| 59 | 
            +
                        else
         | 
| 60 | 
            +
                        {
         | 
| 61 | 
            +
                          on_fail('AWS did not return ResourceRecord. (AWS issue)');
         | 
| 62 | 
            +
                        }
         | 
| 63 | 
            +
                        
         | 
| 64 | 
            +
                      }, 1000);
         | 
| 65 | 
            +
                    }
         | 
| 35 66 | 
             
                    // Do not wait if we requested DNS validation        
         | 
| 36 67 | 
             
                    if (request.ResourceProperties.ValidationMethod === "DNS")
         | 
| 37 68 | 
             
                    {
         | 
| @@ -11,6 +11,8 @@ function wait_for_approval(on_success, on_fail) | |
| 11 11 | 
             
              };
         | 
| 12 12 |  | 
| 13 13 | 
             
              acm.describeCertificate(params, function(err, cert_data) {
         | 
| 14 | 
            +
                console.log('describe certificate data');
         | 
| 15 | 
            +
                console.log(cert_data);;
         | 
| 14 16 | 
             
                if (err)
         | 
| 15 17 | 
             
                {
         | 
| 16 18 | 
             
                  on_fail(err);
         | 
| @@ -38,6 +40,8 @@ function wait_for_approval(on_success, on_fail) | |
| 38 40 |  | 
| 39 41 | 
             
            function fail(err)
         | 
| 40 42 | 
             
            {
         | 
| 43 | 
            +
              console.log('Errored.');
         | 
| 44 | 
            +
              console.log(err);
         | 
| 41 45 | 
             
              Cloudformation.send(request, context, Cloudformation.FAILED, {}, "Error: " + err);
         | 
| 42 46 | 
             
            }
         | 
| 43 47 |  | 
    
        data/lib/sumomo/api.rb
    CHANGED
    
    | @@ -163,10 +163,13 @@ module Sumomo | |
| 163 163 | 
             
                    domain_name,
         | 
| 164 164 | 
             
                    name:,
         | 
| 165 165 | 
             
                    script: nil,
         | 
| 166 | 
            +
                    env: {},
         | 
| 166 167 | 
             
                    dns: nil,
         | 
| 167 168 | 
             
                    cert: nil,
         | 
| 168 169 | 
             
                    mtls_truststore: nil,
         | 
| 169 170 | 
             
                    logging: true,
         | 
| 171 | 
            +
                    network: nil,
         | 
| 172 | 
            +
                    layer: nil,
         | 
| 170 173 | 
             
                    with_statements: [], &block)
         | 
| 171 174 |  | 
| 172 175 | 
             
                  api = make 'AWS::ApiGateway::RestApi', name: name do
         | 
| @@ -221,6 +224,9 @@ module Sumomo | |
| 221 224 |  | 
| 222 225 | 
             
                  fun = make_lambda(
         | 
| 223 226 | 
             
                    name: "#{name}Lambda#{@version_number}",
         | 
| 227 | 
            +
                    env: env,
         | 
| 228 | 
            +
                    network: network,
         | 
| 229 | 
            +
                    layer: layer,
         | 
| 224 230 | 
             
                    files: files, 
         | 
| 225 231 | 
             
                    role: custom_resource_exec_role(with_statements: with_statements) )
         | 
| 226 232 |  | 
    
        data/lib/sumomo/ec2.rb
    CHANGED
    
    | @@ -268,6 +268,7 @@ module Sumomo | |
| 268 268 | 
             
                  docker_password: '',
         | 
| 269 269 | 
             
                  eip: nil,
         | 
| 270 270 | 
             
                  policies: [],
         | 
| 271 | 
            +
                  scalein_protection: true,
         | 
| 271 272 | 
             
                  &block
         | 
| 272 273 | 
             
                )
         | 
| 273 274 |  | 
| @@ -464,6 +465,8 @@ module Sumomo | |
| 464 465 |  | 
| 465 466 | 
             
                    VPCZoneIdentifier subnet_ids
         | 
| 466 467 |  | 
| 468 | 
            +
                    NewInstancesProtectedFromScaleIn scalein_protection
         | 
| 469 | 
            +
             | 
| 467 470 | 
             
                    LaunchConfigurationName launch_config
         | 
| 468 471 | 
             
                    LoadBalancerNames [elb] if elb
         | 
| 469 472 |  | 
    
        data/lib/sumomo/stack.rb
    CHANGED
    
    | @@ -24,8 +24,11 @@ module Sumomo | |
| 24 24 | 
             
                                function_key: "cloudformation/lambda/function_#{name}",
         | 
| 25 25 | 
             
                                handler: 'index.handler',
         | 
| 26 26 | 
             
                                runtime: 'nodejs14.x',
         | 
| 27 | 
            +
                                env: {},
         | 
| 27 28 | 
             
                                memory_size: 128,
         | 
| 28 29 | 
             
                                timeout: 30,
         | 
| 30 | 
            +
                                network: nil,
         | 
| 31 | 
            +
                                layer: nil,
         | 
| 29 32 | 
             
                                enable_logging: true,
         | 
| 30 33 | 
             
                                role: nil)
         | 
| 31 34 |  | 
| @@ -45,6 +48,29 @@ module Sumomo | |
| 45 48 | 
             
                    end
         | 
| 46 49 | 
             
                  end
         | 
| 47 50 |  | 
| 51 | 
            +
                  vpcconfig = nil
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  if network != nil
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                    layer ||= network.subnets.keys.first
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                    ingress = [allow_port(:all)]
         | 
| 58 | 
            +
                    egress = [allow_port(:all)]
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                    lambda_sec_group = make 'AWS::EC2::SecurityGroup' do
         | 
| 61 | 
            +
                      GroupDescription "Lambda Security group for layer: #{layer}"
         | 
| 62 | 
            +
                      SecurityGroupIngress ingress
         | 
| 63 | 
            +
                      SecurityGroupEgress egress
         | 
| 64 | 
            +
                      VpcId network.vpc
         | 
| 65 | 
            +
                    end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                    subnetids = network.subnets[layer].map { |x| x[:name] }
         | 
| 68 | 
            +
                    vpcconfig = {
         | 
| 69 | 
            +
                      SecurityGroupIds: [lambda_sec_group],
         | 
| 70 | 
            +
                      SubnetIds: subnetids
         | 
| 71 | 
            +
                    }
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
             | 
| 48 74 | 
             
                  @store.set_raw(function_key, stringio.string)
         | 
| 49 75 |  | 
| 50 76 | 
             
                  stack = self
         | 
| @@ -58,6 +84,10 @@ module Sumomo | |
| 58 84 | 
             
                    Runtime runtime
         | 
| 59 85 | 
             
                    Timeout timeout
         | 
| 60 86 | 
             
                    Role role.Arn
         | 
| 87 | 
            +
                    VpcConfig vpcconfig unless vpcconfig.nil?
         | 
| 88 | 
            +
                    Environment do
         | 
| 89 | 
            +
                      Variables env
         | 
| 90 | 
            +
                    end
         | 
| 61 91 | 
             
                  end
         | 
| 62 92 |  | 
| 63 93 | 
             
                  if enable_logging
         | 
    
        data/lib/sumomo/version.rb
    CHANGED
    
    
    
        data/lib/sumomo.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sumomo
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.8. | 
| 4 | 
            +
              version: 0.8.16
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - David Siaw
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-09-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         |