GithubHelp home page GithubHelp logo

netflix / asgard Goto Github PK

View Code? Open in Web Editor NEW
2.2K 2.2K 406.0 25.97 MB

[Asgard is deprecated at Netflix. We use Spinnaker ( www.spinnaker.io ).] Web interface for application deployments and cloud management in Amazon Web Services (AWS). Binary download: http://github.com/Netflix/asgard/releases

Home Page: http://netflix.github.com/asgard

License: Apache License 2.0

JavaScript 5.58% HTML 0.68% Groovy 88.76% Java 0.44% CSS 4.37% Batchfile 0.17%

asgard's People

Contributors

aglover avatar ajordens avatar amit-git avatar cfieber avatar claymccoy avatar danveloper avatar jameskleeh avatar jgritman avatar joesondow avatar michaelneale avatar mkrogemann avatar oskarkjellin avatar pas256 avatar phillip avatar tomaslin avatar zanthrash avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

asgard's Issues

Inconsistency in ASG name creation based on attributes (dev-phase etc.)

Following steps to reproduce:

Create an app called xyz

Create cluster for this app, specify NONE of the additional naming attributes

Create second cluster for this app, giving a dev-phase such as 'stage'
Asgard will tell me: There is already an auto scaling group named xyz

But: If I try to create a second cluster with the 'stack' or 'free-form detail' set to some value, Asgard has no issues and creates the group.

So in this case (starting out with an ASG that has no additional attributes set) and then creating a second one, there is an inconsistency in the behavior of 'dev-phase' as compared with other attributes.

Stack dump deleting an Application

Hi,

I am running version 1.1.1 (asgard-standalone.jar latest as at 2013-02-13) and am getting a stack dump when I try to delete an Application:-

Error 500: Executing action [delete] of controller [com.netflix.asgard.ApplicationController] caused exception: Runtime error executing action
Servlet: grails
URI: /grails/application/delete.dispatch
Exception Message: the number of constructors during runtime and compile time for java.lang.RuntimeException do not match. Expected 4 but got 5 
Caused by: Executing action [delete] of controller [com.netflix.asgard.ApplicationController] caused exception: Runtime error executing action 
Class: ApplicationController 
At Line: [224] 
Code Snippet:

and the stack dump is

org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: Executing action [delete] of controller [com.netflix.asgard.ApplicationController]  caused exception: Runtime error executing action
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
    at com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:270)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Caused by: org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: Runtime error executing action
    ... 12 more
Caused by: java.lang.reflect.InvocationTargetException
    ... 12 more
Caused by: java.lang.IncompatibleClassChangeError: the number of constructors during runtime and compile time for java.lang.RuntimeException do not match. Expected 4 but got 5
    at com.netflix.asgard.ValidationException.<init>(ValidationException.groovy:21)
    at com.netflix.asgard.ApplicationService.validateDelete(ApplicationService.groovy:219)
    at com.netflix.asgard.ApplicationService.deleteRegisteredApplication(ApplicationService.groovy:191)
    at com.netflix.asgard.ApplicationController$_closure9.doCall(ApplicationController.groovy:224)
    ... 12 more

Does anyone have a suggestion of what might be wrong ?

thanks

3 Unit Test failures in 1.0.2

Not sure if this is an environment issue (MacOSX Lion, Java 1.6, Grails 1.3.7). I get three Unit test failures in

QueueControllerTests
TimeTests
SimpleQueueTests

Will provide patches if I manage to fix them (new to grails...)

One important environmental issue here is obviously timezone. Managed to fix TimeTests by specifying Timezone in test. Patch to follow

Restricting asgard to localhost broken

To start asgard standalone and limit it to the loopback interface on port 9999:

java -Xmx1024M -XX:MaxPermSize=128m -jar target/asgard-standalone.jar "" localhost 9999

Checking with netstat:

netstat -l --numeric-ports --tcp   | grep 9999

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp6       0      0 :::9999                 :::*                    LISTEN

Workaround is to specify 127.0.0.1 instead:

java -Xmx1024M -XX:MaxPermSize=128m -jar target/asgard-standalone.jar "" 127.0.0.1 9999

Checking with netstat:

netstat -l --numeric-ports --tcp   | grep 9999

tcp6       0      0 127.0.0.1:9999          :::*                    LISTEN

May have something to do with IPV6.

FYI

2.6.32-41-server #88-Ubuntu SMP Thu Mar 29 14:32:47 UTC 2012 x86_64 GNU/Linux

VPC security groups are displayed inconsistently

In some cases, VPC security groups are displayed by name (ideal), and others, by security group ID (terse and confusing). Further, in situations where groups are displayed by name, there is no indicator as to whether a given security group exists within VPC or classic.

At a bare minimum, I'd love to see names used everywhere (the IDs are not human friendly), perhaps with a tooltip or some other mechanism for quickly getting the security group ID. Some visual distinction between VPC and non-VPC groups would be a nice-to-have, although may be less important now that new accounts are all VPC by default.

User Management

Hi,

I am playing with Asgard, I have a question is the user management. I suppose Asgard provide user management, however, I don't know how to use it. Need I activate the function? I am using Asgard version1.2, the war package under tomcat.

Many thanks for your help
Best regards
Sherry

Security group egress configuration

Security groups in Asgard only allow ingress configuration. With new accounts being VPC-only and the heavier emphasis on the VPC networking stack, ideally Asgard would expose both ingress and egress rules where appropriate.

Associating ELB with ASG failed in the Tokyo region (ap-northeast-1)

I just found that "Create New Auto Scaling Group" does not show available ELBs in "Load Balancers (cannot be added or removed later): " section when attempting it in the Tokyo region (ap-northeast-1).

The following step would reproduce it.

  1. Create an "Application".
  2. Create a "Security Group" in the Tokyo region.
  3. Create an "ELB" in the Tokyo region.
  4. Create an "ASG" with associating with an ELB in the Tokyo region.
  5. Any ELB not found in "Create New Auto Scaling Group" panel.

Is this a bug? or a kind of limitations because of AWS?

I could do this correctly when attempting in the Verginia region (us-east-1).

Add documentation for proxy support

Hey guys,

can you please add a brief section on Proxy configuration to your Wiki. I would happily do it myself but lack permissions and a Pull Request does not work for the Wiki as far as I know.

I implemented the Proxy support some time back in Pull Request #112 and thankfully it was merged into the master.

The documentation could essentially consist of a hint to a section that users can add to the ~/.asgard/Config.groovy file. The section should look like this:

proxy {
host="some-proxy.corporate.com"
port=8080
}

Thanks!

Enable autoscale group tagging

It would be really useful for people such as myself who are using tags as metadata to control configuration management systems like puppet and chef to be able to manage those tags using Asgard. I would like to be able to add, edit, delete tags on autoscale groups.

Graceful Rolling Push?

Hi

I would like to suggest a different flow for the Rolling Push, that I believe is much safer.

Currently, if I have only one instance in my Auto Scaling Group and I request a Rolling Push, it terminates the old instance and create a new one. It isn't a graceful Rolling Push, the app will not respond until the new instance is up and running.

My suggestion is to create a new instance, wait until this instance is up and running (ELB) then remove the old instance from the ELB and terminate it.

Asgard is unable to talk to a Eureka that has no urlContext

We've setup our Eureka instance at the ROOT context in tomcat. So its url looks like hostname:8080/v2/... . There is no (redundant) 'eureka' in the url.

Setting Asgard's eureka.urlContext to '' in theory should work, but the code in Asgard treats null/blank as "use default" and uses '/eureka' instead.

There should be a way to indicate that a "no context" url us really desired.

Persist spot setting across ASGs within a cluster

When creating a new sequential ASG in a cluster, the spot price setting does not appear to persist from the previous ASG to the next one. To use spot instances requires clicking on 'Advanced Options' and reselecting Enable under Spot Instances.

Security Group will not show up for EC2 if one with same name exists in VPC

I have a test in place that demonstrates this and I could also start working on a fix but before doing this I would like to know if there is a valid reason for the current implementation that I do not know about.

So consider a security group called 'secure' that you define in EC2 and define under the same name also in a VPC. Now when you use Asgard to define an ASG in EC2, you cannot select the group called 'secure' because Asgard filters it out apparently because it exists in a VPC and thus should be hidden until user selects that the ASG be created in that VPC.

In the amazon console, I can maintain and assign the 'secure' group both in EC2 and VPC, so it looks like the Asgard implementation is based on a convention used at Netflix but maybe not on a hard technical constraint imposed by AWS?

Please advise if I should go ahead with changing that logic.

Add block device mapping support

Currently, custom block device mappings are not able to be communicated via the cluster creation endpoint in AutoScalingController.groovy (and subsequently applied to the LaunchConfiguration).

I see there has been past discussion about default and/or hardcoded block device mappings:

ASGARD-1078
ASGARD-1153
ASGARD-1152
ASGARD-1124

Would a patch with backend support for this be accepted?

Make it easier to build for people not used to gradle

Guys, it would be really nice if it were easier to build Asgard for those of us who aren't used to a gradle based environment.

I'm not saying that you have to not build with gradle, but take a look at what the Curator guys did. They made it really easy by including a gradlew script and having everything gradle related installed inside of the source repo. That makes it possible for someone who has never used gradle in their life before (aka me) able to immediately build without having to worry about how to install or setup gradle.

Latest stable asgard wont boot

Trying to boot up asgard for another account and noticed that it just never finishes to load. When i look at asgard.log I see this in the logs over and over again:

[2013-05-14 20:20:48,221] [background-process-6] com.netflix.asgard.AwsEc2Service Detected image tags missing for region ap-southeast-1, attempting to request tags explicitly
[2013-05-14 20:20:49,291] [background-process-10] com.netflix.asgard.AwsEc2Service Detected image tags missing for region eu-west-1, attempting to request tags explicitly
[2013-05-14 20:20:50,714] [background-process-7] com.netflix.asgard.AwsEc2Service Detected image tags missing for region us-west-2, attempting to request tags explicitly
[2013-05-14 20:20:55,351] [background-process-19] com.netflix.asgard.AwsEc2Service Detected image tags missing for region us-east-1, attempting to request tags explicitly
[2013-05-14 20:20:55,496] [background-process-2] com.netflix.asgard.AwsEc2Service Detected image tags missing for region ap-northeast-1, attempting to request tags explicitly
[2013-05-14 20:22:47,111] [background-process-11] com.netflix.asgard.AwsEc2Service Detected image tags missing for region sa-east-1, attempting to request tags explicitly
[2013-05-14 20:22:47,595] [background-process-5] com.netflix.asgard.AwsEc2Service Detected image tags missing for region eu-west-1, attempting to request tags explicitly
[2013-05-14 20:22:48,409] [background-process-14] com.netflix.asgard.AwsEc2Service Detected image tags missing for region ap-southeast-1, attempting to request tags explicitly
[2013-05-14 20:22:51,294] [background-process-2] com.netflix.asgard.AwsEc2Service Detected image tags missing for region us-west-2, attempting to request tags explicitly

Not sure if this is related to #291 or not.

Documentation of Asgard optional dependencies

It's not immediately obvious that some functionality is dependent on Eureka (at a minimum)--for example, /applications/list will show 0 instances for applications if Eureka is not deployed and configured.
Similar to the conventions issue I opened, it would be awesome to have a page that covered any optional dependencies and what the tradeoffs are when choosing to go without them.

Optionally (and maybe this is worth logging a separate issue), functionality would fall back to some sane default in the absence of things like Eureka (rather than look for discovery instances for a count, simply use the number of instances Running under ASGs associated with the application)

Editing a security group causes a 2nd entry in the security groups list

This is pretty reproducible for me.

  1. Select the App menu then Security Groups
  2. Click on the default security group to enter the details page about it
  3. Select the App menu then Security Groups again

At this point there will be 2 entries for the default security group. This doesn't seem to be persistent though, clicking around through the app and then coming back to the Security Groups page will eventually show only one copy of each security group.

instance-type page changed

It looks like the instance-type page has changed. Looking at the Asgard logs I see the following:

java.lang.Exception: Unexpected format of HTML on http://aws.amazon.com/ec2/instance-types/
at com.netflix.asgard.InstanceTypeService.parseHardwareProfilesDocument(InstanceTypeService.groovy:232)
at com.netflix.asgard.InstanceTypeService.this$2$parseHardwareProfilesDocument(InstanceTypeService.groovy)
at com.netflix.asgard.InstanceTypeService$this$2$parseHardwareProfilesDocument.callCurrent(Unknown Source)
at com.netflix.asgard.InstanceTypeService.retrieveHardwareProfiles(InstanceTypeService.groovy:172)
at com.netflix.asgard.InstanceTypeService.this$2$retrieveHardwareProfiles(InstanceTypeService.groovy)
at com.netflix.asgard.InstanceTypeService$_initializeCaches_closure5.doCall(InstanceTypeService.groovy:65)
at com.netflix.asgard.InstanceTypeService$_initializeCaches_closure5.doCall(InstanceTypeService.groovy)
at com.netflix.asgard.CachedMap.fill(CachedMap.groovy:169)
at com.netflix.asgard.CachedMap$fill.call(Unknown Source)
at com.netflix.asgard.CachedMap$_start_closure1.doCall(CachedMap.groovy:143)
at com.netflix.asgard.CachedMap$_start_closure1.doCall(CachedMap.groovy)

[2013-05-14 19:40:46,840] [background-process-9] com.netflix.asgard.CachedMap Cached 497 'us-west-1 Image'
[2013-05-14 19:40:47,252] [background-process-14] com.netflix.asgard.AwsEc2Service Detected image tags missing for region sa-east-1, attempting to request tags explicitly
[2013-05-14 19:40:47,674] [background-process-8] com.netflix.asgard.AwsEc2Service Detected image tags missing for region eu-west-1, attempting to request tags explicitly
[2013-05-14 19:40:47,778] [background-process-14] com.netflix.asgard.CachedMap Cached 369 'sa-east-1 Image'
[2013-05-14 19:40:48,204] [background-process-10] com.netflix.asgard.AwsEc2Service Detected image tags missing for region ap-southeast-1, attempting to request tags explicitly
[2013-05-14 19:40:48,396] [background-process-8] com.netflix.asgard.CachedMap Cached 626 'eu-west-1 Image'
[2013-05-14 19:40:48,727] [background-process-10] com.netflix.asgard.CachedMap Cached 553 'ap-southeast-1 Image'
[2013-05-14 19:40:49,194] [background-process-13] com.netflix.asgard.CachedMap Cached 100 'us-west-1 Volume'
[2013-05-14 19:40:50,372] [background-process-0] com.netflix.asgard.CachedMap Cached 38 'sa-east-1 Storage Snapshot'

Asgard returns "GETing" when loading the front page.

Seems like a really interesting tool, thanks for open sourcing it. I've connected it to my account where it was working well. After launching my first AutoScale group, I'm now getting back a page which only says GETing.

Security group CIDR configuration

:)

I know this is a hot-button issue in some circles, but it would be lovely if there were (at the very least) some sort of configurable option that enabled/disabled the ability to use CIDR ranges. If/when authorization materializes, perhaps it could be tied to a given user access level.

Documentation of Asgard conventions and configuration

Asgard is very convention-driven, but not all of the expected conventions are spelled out in documentation and require spelunking through the source to discover. It would be useful to see a wiki page or other documentation that goes into some level of detail on tags Asgard expects to be on various objects (and their formats), how Asgard relates objects, what conventions or systems need to be in place for things like instance-level helper/management URLs to show in the instance detail page, etc.

The documentation on the configuration file is a little thin, too, and full understanding requires a code dive. A full, marked up sample configuration or a wiki page would rock.

AutoConfig name generation fails when Asgard isn't in the root

On our system, asgard is accessed as "/asgard/" from tomcat, which appears to work mostly fine, except when creating a new AutoScaling instance, when it attempts to load "/autoScaling/generateName.json" instead of "/asgard/autoScaling/generateName.json"

New Auto Scaling Group - Name Preview

Hey

I deployed Asgard in my tomcat/webapps together with other apps following the Tomcat Configuration guide.

http://internal.domain/app1
http://internal.domain/app2
http://internal.domain/asgard

Asgard seems to be working fine, except in the section New Auto Scaling Group - Name Preview, it tries to make a XHR Request at

http://internal.domain/autoScaling/generateName.json?appName=&stack…

instead of

http://internal.domain/asgard/autoScaling/generateName.json?appName=&stack…

If I deploy it as a tomcat ROOT or the standalone version it works fine.

Cheers

Lots of Exceptions

Running asgard I see in the log files basically a never ending stream of...

[2012-11-05 17:08:43,772] [background-process-4] com.netflix.asgard.CachedMap Exception filling cache us-east-1 Security Group
com.amazonaws.AmazonClientException: Unable to unmarshall response (ParseError at [row,col]:[5097,13]
Message: Read timed out)
at com.amazonaws.http.AmazonHttpClient.handleResponse(AmazonHttpClient.java:497)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:274)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:170)
at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.java:5808)
at com.amazonaws.services.ec2.AmazonEC2Client.describeSecurityGroups(AmazonEC2Client.java:1016)
at com.amazonaws.services.ec2.AmazonEC2$describeSecurityGroups.call(Unknown Source)
at com.netflix.asgard.AwsEc2Service.retrieveSecurityGroups(AwsEc2Service.groovy:384)
at com.netflix.asgard.AwsEc2Service.this$2$retrieveSecurityGroups(AwsEc2Service.groovy)
at sun.reflect.GeneratedMethodAccessor512.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

And asgard slowly but surely comes to a grinding halt using gigabytes of memory (for real? gigabytes for a webapp?)

Is there something I need to change here? perhaps the asgard IAM permissions or something?

Asgard never starting

On OSX 10.8.2, asgard never starts. On first run I inputted the AWS keypair and then got "Asgard is starting up. This may take a few minutes." for an hour. If I restart asgard I get that message again. Any ideas how to debug the issue ?

$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
$ java -Xmx2048M -XX:MaxPermSize=128m -jar asgard-standalone.jar
Feb 16, 2013 3:05:13 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
Feb 16, 2013 3:05:13 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
Feb 16, 2013 3:05:13 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.29
Feb 16, 2013 3:05:13 PM org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
INFO: No global web.xml found
Feb 16, 2013 3:05:22 PM org.apache.catalina.core.ApplicationContext log
INFO: No Spring WebApplicationInitializer types detected on classpath
Using /Users/zimbatm/.asgard as ASGARD_HOME
Feb 16, 2013 3:05:23 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
Using /Users/zimbatm/.asgard as ASGARD_HOME
Feb 16, 2013 3:05:36 PM org.apache.catalina.core.ApplicationContext log
INFO:  [CompressingFilter/1.7] CompressingFilter has initialized
Feb 16, 2013 3:05:36 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'grails'
Feb 16, 2013 3:05:36 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8080"]
Server running. Browse to http://localhost:8080
Feb 16, 2013 3:05:50 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'gsp'
Feb 16, 2013 3:05:50 PM org.apache.catalina.core.ApplicationContext log
INFO: GSP servlet initialized

Application Instances

Hi there,

Firstly this seems to be a great app; well done.

I have a few questions the primary being. Is it possible to assign Existing Instances to new Applications? So far it does not seem so?

Best regards
Ross

Unable to build war file with latest source

Grails spits out the following errors after running the "grails war" command with the latest source for me:

Error executing script War: taskdef class org.codehaus.groovy.grails.compiler.GrailsCompil$
r cannot be found
using the classloader AntClassLoader

This is with the required version of Grails 2.1.1

Pluggable provider for instance types metadata

For the case of Eucalyptus, the Amazon instance types metadata needs to be configurable. The definitions of the EC2 instance types are different in Eucalyptus, so getting the metadata from Amazon's published information doesn't make sense. Allow the Asgard admin to override the source of data for instance types metadata with their own implementation.

Needed by @grze for Eucalyptus support

Managing Multiple AWS accounts

I have 5 AWS accounts that I need to view through Asgard. Is it possible to select a certain account and then manage that.

Custom user data when creating clusters

It is currently not possible to configure User Data when setting up an auto scaling group. It would be ideal to have a textarea where you can input user data in the following format:

somekey=somevalue
someotherkey=someothervalue

Pluggable application functionality provider

Allow a user running something like Eucalyptus to override all ApplicationService functions so the application database can be something non-standard and non-Amazon, totally implemented by the user.

Needed by @grze for Eucalyptus support

stacktrace.log

looks like this is a Grail issue but it is preventing me from using asgard. here is a stack trace of what happens when i try to start tomcat:

INFO: Deploying configuration descriptor manager.xml
Dec 8, 2012 2:19:23 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive asgard.war
Using /usr/share/tomcat6/.asgard as ASGARD_HOME
log4j:WARN No appenders could be found for logger (org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: stacktrace.log (Permission denied)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:192)
at java.io.FileOutputStream.(FileOutputStream.java:116)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:294)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:165)
at org.apache.log4j.spi.OptionHandler$activateOptions.call(Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:112)
at org.codehaus.groovy.grails.plugins.log4j.Log4jConfig.createFullstackTraceAppender(Log4jConfig.groovy:236)
at org.codehaus.groovy.grails.plugins.log4j.Log4jConfig.configure(Log4jConfig.groovy:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSite.invoke(PogoMetaMethodSite.java:231)
at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.call(PogoMetaMethodSite.java:64)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:42)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at org.codehaus.groovy.grails.plugins.log4j.Log4jConfig.initialize(Log4jConfig.groovy:70)
at org.codehaus.groovy.grails.plugins.log4j.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:48)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Using /usr/share/tomcat6/.asgard as ASGARD_HOME

java.io.FileNotFoundException: stacktrace.log (Permission denied). I notices tomcat user which owns the process is trying to create this file under /usr/share/tomcat6/bin !
i am using ubuntu 10.04 and java version is:
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

Unit test failure ( testGetMonthlyLinuxOnDemandPrice ) when provided credentials are from non-us Amazon Account

I'm playing with Asgard and used my UK Amazon credentials.

This seems to make your unit tests ( testGetMonthlyLinuxOnDemandPrice ) fail:

| Failure:  testGetMonthlyLinuxOnDemandPrice(com.netflix.asgard.model.InstanceTypeDataTests)
|  Assertion failed: 

assert '$72.00' == new InstanceTypeData(linuxOnDemandPrice: 0.10).monthlyLinuxOnDemandPrice
                |  |                                              |
                |  |                                              £72.00
                |  com.netflix.asgard.model.InstanceTypeData@2878e6f9
                false

    at com.netflix.asgard.model.InstanceTypeDataTests.testGetMonthlyLinuxOnDemandPrice(InstanceTypeDataTests.groovy:21)

NullPointerException when creating ScalingPolicyController

Ubuntu 12.10, running the latest standalone jar (v1.1.1) file from https://netflix.box.com/asgard

After creating an application and ASG, I went to add a scaling policy, and got a NullPointerException

Error 500: Executing action [show] of controller [com.netflix.asgard.ScalingPolicyController] caused exception: Runtime error executing action
Servlet: grails
URI: /grails/scalingPolicy/show.dispatch
Exception Message: 
Caused by: 
Class: ScalingPolicyController 
At Line: [83] 
Code Snippet:
<blank>
java.lang.NullPointerException
    at com.sun.beans.TypeResolver.resolve(TypeResolver.java:332)
    at com.sun.beans.TypeResolver.resolve(TypeResolver.java:362)
    at com.sun.beans.TypeResolver.resolve(TypeResolver.java:172)
    at com.sun.beans.TypeResolver.resolveInClass(TypeResolver.java:93)
    at java.beans.FeatureDescriptor.getParameterTypes(FeatureDescriptor.java:387)
    at java.beans.MethodDescriptor.setMethod(MethodDescriptor.java:114)
    at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:72)
    at java.beans.MethodDescriptor.<init>(MethodDescriptor.java:56)
    at java.beans.Introspector.getTargetMethodInfo(Introspector.java:1131)
    at java.beans.Introspector.getBeanInfo(Introspector.java:414)
    at java.beans.Introspector.getBeanInfo(Introspector.java:161)
    at com.netflix.asgard.CachedMap.putAllAndRemoveMissing(CachedMap.groovy:256)
    at com.netflix.asgard.AwsCloudWatchService.getAlarms(AwsCloudWatchService.groovy:103)
    at com.netflix.asgard.ScalingPolicyController$_closure4.doCall(ScalingPolicyController.groovy:83)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
    at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
    at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
    at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
    at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:380)
    at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
    at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
    at org.apache.shiro.grails.SavedRequestFilter.doFilter(SavedRequestFilter.java:55)
    at com.planetj.servlet.filter.compression.CompressingFilter.doFilter(CompressingFilter.java:270)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

Change port in the standalone version?

Hey

Is there a way to change the Asgard port running the standalone version? I would like to use a custom port instead of 8080.

java -Xmx1024M -XX:MaxPermSize=128m -jar asgard-standalone.jar

I tried -p and --port parameters, but they didn't work.

Cheers

REST API returns HTML only: cluster/createNextGroup

Is this intentionally so?

It would be nice to have this controller return something that is easier to parse when integrating the REST call into a delivery pipeline.

Any changes planned in this area for the near future? Something for me to work at?

IAM Instance Profiles Credential Support

In order to help make it easier to run asgard in EC2 securely, it would be helpful if there was support for the new Instance Profiles to provide credentials.

Suggested Changes

  • Refactor use of BasicAWSCredentials to AWSCredentials
  • Implement SecretService as a AWSCredentialsProvider
  • Implement and use a ProviderChain that includes the SercretServiceProvider
    • ref DefaultAWSCredentialsProviderChain
  • Change client construction to use the ProviderChain rather than the raw credentials.
    • This is important because the credentials in the new model change ever few hours and the clients will do the right thing if they have a provider specified.

Reference

Amazon Java SDK Release Notes

AWS Identity and Access Management (IAM) - Instance Profiles

IAM Instance Profiles allow you to securely deliver AWS credentials directly to your Amazon EC2 instances. You can use the updated >IAM API, or the AWS Management Console to create IAM Instance Profiles, then launch instances using that profile to have your AWS >credentials securely distributed to the Amazon EC2 instances running your application.

The AWS SDKs make it easy to access the IAM Instance Profile credentials distributed through your EC2 instances. See below for >more information on the new SDK client constructors and credentials provider implementations.

The Amazon EC2 and Auto Scaling APIs have also been updated so that you can launch instances or create Auto Scaling groups that >take advantage of the new, easy to use, credentials distributions feature.

Default Client Constructors

Each client in the AWS SDK for Java now includes a default constructor to make it even easier to work with the SDK. The default >constructors use an AWSCredentialsProviderChain that chains together three new implementations of AWSCredentialsProvider that >search for your AWS credentials in this order:

Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_KEY
Java System Properties - aws.accessKeyId and aws.secretKey
IAM Instance Profile - AWS credentials securely delivered directly to your Amazon EC2 instances
Developers are free to create their own custom implementations of AWSCredentialsProvider or custom chains of credentials providers >using the AWSCredentialsProviderChain class.

Note from @joesondow:
@grze From Eucalyptus needs this too.

Environment variables should be configurable

At several places in Asgard there are hard coded assumptions about what environment variables are available (countries, dev phase, partners etc.). These variables make sense for Netflix, but not for other users of Asgard. They should be configurable instead, for example in config.groovy.

Screen Shot 2013-03-02 at 14 35 18

severe memory issues when deploying to tomcat

edit - I closed this because it seems like the google group has this covered

I deployed the Asgard war to my local Tomcat instance. When Asgard ran its first-time setup, I received a 500 error basically saying that Tomcat ran out of memory.

I restarted my computer, restarted Tomcat, and brought up Asgard. This time I was able to see the main screen. However, when I clicked on a link (I think it was to manage my instances) I received a 500 error, this time without even a Tomcat error page.

After this happened, I was unable to fully shutdown or restart Tomcat at all from the startup and shutdown scripts. Here is some log output in the daily catalina log:

INFO: Stopping service Catalina
Aug 1, 2012 1:35:10 PM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc
SEVERE: The web application [/asgard] registered the JDBC driver [org.hsqldb.jdbcDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
Aug 1, 2012 1:35:10 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/asgard] appears to have started a thread named [java-sdk-http-connection-reaper] but has failed to stop it. This is very likely to create a memory leak.
Aug 1, 2012 1:35:10 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/asgard] appears to have started a thread named [background-process-0] but has failed to stop it. This is very likely to create a memory leak.
Aug 1, 2012 1:35:10 PM org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
...
...
(it repeated this for 20 threads total)

SEVERE: The web application [/asgard] created a ThreadLocal with key of type [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory$2](value [org.codehaus.groovy.grails.commons.spring.ReloadAwareAutowireCapableBeanFactory$2@4a2e2b5c]) and a value of type [java.lang.Boolean](value [false]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
Aug 1, 2012 1:35:10 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
...
(it also repeated this for several other threads)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.