Git Product home page Git Product logo

ecs-cf-service-broker's People

Contributors

gaddas3 avatar kirillston avatar ksteinfeldt avatar lwoydziak avatar maddisondavid avatar mansur51-hub avatar misanthropicat avatar napand avatar rglv avatar rogalv avatar spiegela avatar svistunovaleksandr avatar twincitiesguy avatar vchrisb 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

Watchers

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

ecs-cf-service-broker's Issues

unable to push the app instance

2016-06-10T09:40:18.79-0700 [APP/0] ERR Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsServiceInstanceBindingService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.cloudfoundry.broker.service.EcsService com.emc.ecs.cloudfoundry.broker.service.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
2016-06-10T09:40:18.79-0700 [APP/0] ERR ... 25 more
2016-06-10T09:40:18.79-0700 [APP/0] ERR Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.cloudfoundry.broker.service.EcsService com.emc.ecs.cloudfoundry.broker.service.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
2016-06-10T09:40:18.79-0700 [APP/0] ERR ... 37 more
2016-06-10T09:40:18.79-0700 [APP/0] ERR Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)
2016-06-10T09:40:18.79-0700 [APP/0] ERR ... 39 more
2016-06-10T09:40:18.79-0700 [APP/0] ERR Caused by: java.lang.IllegalArgumentException: "segments" parameter is null.
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.glassfish.jersey.uri.internal.JerseyUriBuilder.appendPath(JerseyUriBuilder.java:732)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.glassfish.jersey.uri.internal.JerseyUriBuilder.appendPath(JerseyUriBuilder.java:727)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.glassfish.jersey.uri.internal.JerseyUriBuilder.path(JerseyUriBuilder.java:357)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.glassfish.jersey.uri.internal.JerseyUriBuilder.path(JerseyUriBuilder.java:72)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at javax.ws.rs.core.UriBuilder.fromPath(UriBuilder.java:148)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at com.emc.ecs.management.sdk.Connection.getUriBuilder(Connection.java:147)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at com.emc.ecs.management.sdk.BaseUrlAction.list(BaseUrlAction.java:22)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at com.emc.ecs.cloudfoundry.broker.service.EcsService.lookupObjectEndpoints(EcsService.java:198)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at com.emc.ecs.cloudfoundry.broker.service.EcsService.initialize(EcsService.java:70)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at java.lang.reflect.Method.invoke(Method.java:497)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:354)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:305)
2016-06-10T09:40:18.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
2016-06-10T09:40:18.79-0700 [APP/0] ERR ... 51 more

Unable to create bucket with quota

Reported by @NavleenKaur-24

$ cf create-service ecs-bucket 5gb testbucket
Creating service instance testbucket in org sds / space dev as [email protected]...
FAILED
Server error, status code: 502, error code: 10001, message: Service broker error: java.lang.NullPointerException

Problem only exhibits with quota carrying plans.

after request api, still getting an error when trying to push the instance

E.jar!/]
2016-06-06T20:15:05.79-0700 [APP/0] ERR java.lang.reflect.InvocationTargetException
2016-06-06T20:15:05.79-0700 [APP/0] ERR at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at java.lang.reflect.Method.invoke(Method.java:497)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at java.lang.Thread.run(Thread.java:745)
2016-06-06T20:15:05.79-0700 [APP/0] ERR Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'serviceInstanceBindingController' defined in URL [jar:file
:/home/vcap/app/lib/spring-cloud-cloudfoundry-service-broker-1.0.0.BUILD-SNAPSHOT.jar!/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingController.class]: Unsatisfied dependency expressed
through constructor argument with index 1 of type [org.springframework.cloud.servicebroker.service.ServiceInstanceBindingService]: : Error creating bean with name 'ecsServiceInstanceBindingService': Injection o
f autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.cloudfoundry.broker.service.EcsService com.emc.ecs.clou
dfoundry.broker.service.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method fa
iled; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService
InstanceBindingService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.cloudfoundry.broker
.service.EcsService com.emc.ecs.cloudfoundry.broker.service.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsSe
rvice': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:764)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:357)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:1124)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:1113)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at com.emc.ecs.cloudfoundry.broker.config.Application.main(Application.java:30)
2016-06-06T20:15:05.79-0700 [APP/0] ERR ... 6 more
2016-06-06T20:15:05.79-0700 [APP/0] ERR Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsServiceInstanceBindingService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.cloudfoundry.broker.service.EcsService com.emc.ecs.cloudfoundry.broker.servi
ce.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
2016-06-06T20:15:05.79-0700 [APP/0] ERR at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)

Add CI testing

It would be great to hook your testing package up to Travis so that you an introduce the beginnings of CI to your project. Great work.

Accept group/custom permissions on bucket creation/update

Group, custom and non-application-binding permissions that aren't tied directly to an binding user should be able to be provided in create/update calls. Support for this might look something like:

$ cf create-service ecs-bucket 5gb temp-bucket -c '{ acl: [{group: "AllUsers", permissions: ["Read"]}, {user: "hdfsUser", permissions: ["Read", "Write"]} ] }'

Since this applies to buckets, these permissions must be checked to ensure that they can't grant a user access to create/delete buckets from the namespace...

This could also be supported in the catalog configuration for a service. We could add something along the lines of:

catalog:
  services:
    - id: <Service ID UUID>
      name: ecs-bucket
      description: Elastic Cloud S3 Object Storage Bucket
      acl:
        - group: AllUsers
          permissions:
            - Read
        - user: hdfsUser
          permissions:
            - Read
            - Write

In the case of YAML catalog configuration, I think the expiration should be come locked by the service, meaning that it would override a setting attempted during the service-instance creation.

Need to get some more clarification on this aspect...

Service broker app crashing

I pushed the service broker and added the environment variables, but the app keeps crashing with the following error. Wondering if I am missing any settings. Appreciate any help.

Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR java.lang.reflect.InvocationTargetException��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at java.lang.reflect.Method.invoke(Method.java:497)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at java.lang.Thread.run(Thread.java:745)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'serviceInstanceBindingController' defined in URL [jar:file:/home/vcap/app/lib/spring-cloud-cloudfoundry-service-broker-1.0.0.BUILD-SNAPSHOT.jar!/org/springframework/cloud/servicebroker/controller/ServiceInstanceBindingController.class]: Unsatisfied dependency expressed through constructor argument with index 1 of type [org.springframework.cloud.servicebroker.service.ServiceInstanceBindingService]: : Error creating bean with name 'ecsServiceInstanceBindingService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.serviceBroker.EcsService com.emc.ecs.serviceBroker.service.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsServiceInstanceBindingService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.serviceBroker.EcsService com.emc.ecs.serviceBroker.service.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:185)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1143)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1046)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:764)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:357)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:1124)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.boot.SpringApplication.run(SpringApplication.java:1113)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at com.emc.ecs.serviceBroker.config.Application.main(Application.java:34)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR ... 6 more��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsServiceInstanceBindingService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.serviceBroker.EcsService com.emc.ecs.serviceBroker.service.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR ... 25 more��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.emc.ecs.serviceBroker.EcsService com.emc.ecs.serviceBroker.service.EcsServiceInstanceBindingService.ecs; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:573)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR ... 37 more��
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ecsService': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: "segments" parameter is null.���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)���
Fri Apr 22 2016 12:43:16 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)���
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)���
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)���
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)���
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)���
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR ... 39 more��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR Caused by: java.lang.IllegalArgumentException: "segments" parameter is null.��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.glassfish.jersey.uri.internal.JerseyUriBuilder.appendPath(JerseyUriBuilder.java:732)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.glassfish.jersey.uri.internal.JerseyUriBuilder.appendPath(JerseyUriBuilder.java:727)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.glassfish.jersey.uri.internal.JerseyUriBuilder.path(JerseyUriBuilder.java:357)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.glassfish.jersey.uri.internal.JerseyUriBuilder.path(JerseyUriBuilder.java:72)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at javax.ws.rs.core.UriBuilder.fromPath(UriBuilder.java:112)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at com.emc.ecs.managementClient.Connection.getUriBuilder(Connection.java:144)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at com.emc.ecs.managementClient.BaseUrlAction.list(BaseUrlAction.java:17)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at com.emc.ecs.serviceBroker.EcsService.lookupObjectEndpoints(EcsService.java:64)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at com.emc.ecs.serviceBroker.EcsService.initialize(EcsService.java:54)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at java.lang.reflect.Method.invoke(Method.java:497)��
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:354)���
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:305)���
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)���
Fri Apr 22 2016 12:43:17 GMT-0500 (CDT) [APP] ERR ... 51 more��

Broker Parameters

From where can I get the Broker parameters , can I push the jar created as a CF App?

Travis build failing

The travis tests are currently failing. I believe it's due to the Codacy integration, which needs to be updated. Here is the expected updates to the before_script and after_script for the travis config below, but I will need to word the the {code} team to generate updated Codacy encrypted env vars.

before_script:
  - sudo apt-get install jq
  - wget -O ~/codacy-coverage-reporter-assembly-latest.jar $(curl https://api.github.com/repos/codacy/codacy-coverage-reporter/releases/latest | jq -r .assets[0].browser_download_url)
after_script:
  - java -cp ~/codacy-coverage-reporter-assembly-latest.jar com.codacy.CodacyCoverageReporter -l Java -r build/reports/jacoco/test/jacocoTestReport.xml

Add namespace service to catalog broker capabilities

ECS has the capability to create a new namespace where an application owner can create/delete his/her own buckets for fun & [company] profit. The ECS broker, rather than creating only buckets, can also support the creation of namespaces. This would be pretty cool.

The service for a namespace would be configured in the catalog, just like bucket services/plans are now, with many similar options. configuration for this might looks something like:

catalog:
  services:
    - id: f3cbab6a-5172-4ff1-a5c7-72990f0ce2ab
      name: ecs-namespace
      description: Elastic Cloud Namespace
      bindable: true
      planUpdatable: true
      tags:
        - namespace
        - object
      metadata:
        displayName: ecs-namespace
        imageUrl: http://www.emc.com/images/products/header-image-icon-ecs.png
        longDescription: EMC Elastic Cloud Storage (ECS) namespace for creating object storage buckets and CAS pools.
        providerDisplayName: EMC Corporation
        documentationUrl: https://community.emc.com/docs/DOC-45012
        supportUrl: http://www.emc.com/products-solutions/trial-software-download/ecs.htm
      plans:
        - id: 8e777d49-0a78-4cf4-810a-b5f5173b019e
          name: limited
          free: true
          description: Free Trial
          quota-limit: 20
          quota-warning: 18
          bucket-limit: 5
          expiration: {days: 30}
          metadata:
            costs:
              - amount:
                  usd: 0.0
                unit: MONTHLY
            bullets:
              - Shared object storage
              - 20 GB Storage
              - Ability to create up to 5 buckets

Support encryption of buckets

The ECS management API now supports a is_encryption_enabled tag in the bucket creation. Need to update the management-client, and the broker options to support this. Support for this might look something like:

$ cf create-service ecs-bucket 5gb temp-bucket -c "{ encrypt: true }"

This could also be supported in the catalog configuration for a service. We could add something along the lines of:

catalog:
  services:
    - id: <Service ID UUID>
      name: ecs-bucket
      description: Elastic Cloud S3 Object Storage Bucket
      service-settings:
        service-type: bucket
        encrypt: true

In the case of YAML catalog configuration, I think the expiration should be come locked by the service, meaning that it would override a setting attempted during the service-instance creation.

Need to get some more clarification on this aspect...

Question on ECS SB

Hi,

Quick questions to validate my POC:

  1. Which version of ECS is supported by this Service Broker? Is this service broker works for both public and on-premise version of ECS?
  2. Basic Authentication is still supported? I could see in EMC API documentation it says Authorization SigV2 for encryption?
  3. Regarding Ports:
    Public ECS solution supports only 443, 9020 ad 9021 ports is for On-premise ECS Solution?

I tried running this service broker on CF, but resulting with 400 error during Login->jerseyClient.target(uriBuilder).request().get(). I am suspecting the support of https://baseurl:9021/login

Your inputs are very much appreciated.

Thanks
MR

Support Async Broker calls

With the number of API calls, the CF creation/deletion/bind/unbind commands can be a little slow. Not so bad that anything times out, but it would be nice to have them respond immediately if it doesn't make the end-user experience more complex.

Check broker compatibility

Compatibility is confirmed against service broker API 2.8. Need to determine and document Cloud Foundry release compatibility with that, and check previous service broker API releases.

Add retention period support to catalog and/or service instance parameters

Default retention of objects within a bucket can be updated on the bucket at service-instance creation/update. Support for this might look like:

$ cf create-service ecs-bucket 5gb temp-bucket -c "{ retention: {days: 30} }"

This could also be supported in the catalog configuration for a service. We could add something along the lines of:

catalog:
  services:
    - id: <Service ID UUID>
      name: ecs-bucket
      description: Elastic Cloud S3 Object Storage Bucket
      service-settings:
        service-type: bucket
        retention:
          days: 30

In the case of YAML catalog configuration, I think the expiration should be come locked by the service, meaning that it would override a setting attempted during the service-instance creation.

Need to get some more clarification on this aspect...

Restrict bucket create/delete rights to binding users

Currently bucket bindings (ECS object users) give the user access to create/remove buckets, which don't fall under the same quota, or could have no quota at all.

When creating bucket bindings, the object-user should not have rights to create or delete buckets through the S3 API.

BASE URL should be used instead of Object Endpoint

The current process requires an object-endpoint entry, which can be overridden by the base-url. No intelligent default is detected. I think the following ordering makes betters sense:

  1. If a object-endpoint config is provided, this should override all
  2. If a base-url is provided, then that is selected, and the URL in it is used as the object-endpoint
  3. If no configuration is provided, try to detect a default base URL.
  4. If no default is found, pick the first base URL in the list.

As an aside, this will also likely make the binding steps faster, since it'll save an API call looking up the base URL.

Support bucket expiration via plan or instance parameters

AWS S3 bucket lifecycle properties support object/bucket expiration. The broker should be able to support this as a instance parameter provided during the service instance creation/upgrade. Support for this might look something like:

$ cf create-service ecs-bucket 5gb temp-bucket -c "{ expiration: {days: 30} }"

This could also be supported in the catalog configuration for a service. We could add something along the lines of:

catalog:
  services:
    - id: <Service ID UUID>
      name: ecs-bucket
      description: Elastic Cloud S3 Object Storage Bucket
      service-settings:
        service-type: bucket
        expiration:
          days: 30

In the case of YAML catalog configuration, I think the expiration should be come locked by the service, meaning that it would override a setting attempted during the service-instance creation.

Need to get some more clarification on this aspect...

Add support for multi-cloud foundry clouds

OK! Some brainstorming with Pivotal folks has definitely paid off this week!

I have a decent solution for supporting multiple Cloud Foundry clouds that is far superior to previous work arounds.

Basically, we'll support a new user-provided parameter when creating the bucket/namespace of the existing bucket in the cloud, and create a new service-instance to support that. It's totally going to work. I can feel it.

Add force delete option to bucket

Force-deleting a bucket that has objects within it is not supported by either the S3 or ECS management APIs. This isn't a limitation of ECS -- it's a limitation of the S3 API, and for some very good reasons.

That said, it would be really nice to have this functionality in the broker. Here are some of my thoughts on this:

1.) We should enable force deletes only when specifically configured in the broker-config to do so. This should not be the default configuration. We could configure it with something like:

broker:
  enable-force-delete: true

2.) We will need to delete the objects as an object user with access to the bucket. Up to this point, we've avoided having granting bucket-rights to the broker repository user. There's also no guarantee that a CF instance-binding user will have rights to modify a bucket, so do we create a temporary user, just to delete the bucket contents?

3.) Deleting the objects could take a while, we'll need to support #29 so that the command doesn't time out.

4.) The host running the async command to delete the data could fail. Cloud Foundry wouldn't auto-retry this job, so we should test CF to see what it does when a broker activity fails in the middle. Will the bucket be orphaned?

Also, on that subject, the concern is around CF users not deleting their buckets. The good news here is that, currently, the bucket can't be deleted from CF until it's empty, so it'll show up as an unbound service instance, and will create a nice little nag, for users that don't clean up after themselves...

Improve error messages for ECSService init

When the EcsService fails to start, it's typically because user configuration settings are incorrect, or the ECS management API is unavailable from the "management-endpoint"; however, the error message is cryptic. We need to improve the user experience for initial startup, and provide more meaningful errors.

Set the NS, RG and base URL in the service definition

Right now, there are settings for namespace, replication group & base urls that are global for the broker. If we add these as configuration parameters in the service definition, we can allow the configuration of multiple namespace/replication-group/base-url options as separate service plans.

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.