Giter Club home page Giter Club logo

codenvy's Introduction

Codenvy

Cloud workspaces for development teams. One-click Docker environments to create workspaces with production runtimes. Team onboarding and collaboration with workspace automation and permissions letting devs sync their desktop IDE or use our gorgeous Eclipse Che IDE. Workspace platform for DevOps to manage workspaces at scale with programmable and customizable infrastructure.

Eclipse Che

Getting Started

You can run Codenvy in the public cloud, a private cloud, or install it on any OS that has Docker 1.11+ installed. Codenvy has been tested on many flavors of Linux, MacOS, and Windows. A private Codenvy install allows you to configure LDAP, permissions, Eclipse Che extensions, Jira integration, Jenkins integration and integration to your private toolchain.

The docs are awesome.

Or, quick start:

docker run codenvy/cli start

Then open http://localhost and log in as admin / password.

The codenvy repository is where we do development. Your license grants you access to the source code for customization, but you are not able to redistribute the source code or use it in commercial endeavors.

License

Codenvy is free for 3 users. For additional users or support, please purchase a Codenvy enterprise license.

Customiziing

There are many ways to customize Codenvy. Codenvy is customized using Eclipse Che including stacks, templates, commands, IDE extensions, server-side extensions plugins, assemblies, RESTful APIs, and editors.

Clone

git clone https://github.com/codenvy/codenvy.git

If master is unstable, checkout the latest tagged version.

Build and Run

cd codenvy
mvn clean install

# A new assembly is placed in:
cd onpremises-ide-packaging-tomcat-codenvy-allinone\target\

# Assembly:
onpremises-ide-packaging-tomcat-codenvy-allinone-${version}.zip

# Run Codenvy with a custom assembly - volume mount this codenvy repository
docker run -v /var/run/docker.sock:/var/run/docker.sock -v <path-to-repo>:/repo codenvy/cli start

Engage

codenvy's People

Contributors

akorneta avatar andrienkoaleksandr avatar ashumilova avatar azatsarynnyy avatar benoitf avatar callmephilip avatar cvh11 avatar dmytro-ndp avatar garagatyi avatar gauravmeena0708 avatar hound-eye avatar jalessio avatar kevinpollet avatar markdowney avatar mkuznyetsov avatar mmorhun avatar monferat avatar mshaposhnik avatar ohrimenko1988 avatar olexii4 avatar rainf0x avatar roman01la avatar romannikitenko avatar skabashnyuk avatar slemeur avatar sleshchenko avatar tolusha avatar vinokurig avatar voievodin avatar zanetine 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

codenvy's Issues

Prevent workspace starting if the system achieved resources limit.

Epic link [(https://github.com//issues/406)]

If the system has achieved 90% of the allowed disk threshold OR 90% of total RAM available from all running workspaces, then the system:

  1. Prevent any new workspaces from starting for any user. When doing this, we should print friendly error message to user before they attempt to start a workspace.
  2. Have banner displayed to all users / admins indicating that the system is limiting new workspaces from running due to reaching max resources.

We need this to work properly for both UD-driven and factory-driven scenarios.

Create a script for diagnostic and collect needed info for support in case of troubleshooting

This is a part of #412 epic

We need create a tool which will simplify collecting any needed info for support customers in case of some problems. That tool should be super easy to execute preferably bash script and on first iteration it should collect needed files or commands output and put it into zip.
Items to collect:
files (note * means all files in the folder)
/var/log/puppet/
/var/log/nginx/

/var/log/mongodb/*
/var/log/docker-distribution.log
/var/log/fail2ban.log
/var/log/haproxy.log
/var/log/messages
/var/log/swarm.log
/var/log/yum.log
/etc/puppet/auth.conf
/etc/puppet/autosign.conf
/etc/puppet/fileserver.conf
/etc/puppet/puppet.conf
/home/codenvy/codenvy-data/che-machines-logs/*
/home/codenvy/codenvy-data/logs/*
/home/codenvy/codenvy-data/conf/machine.properties
/home/codenvy/codenvy-data/conf/general.properties
/etc/resolv.conf
/etc/hostname
/etc/hosts**

commands output to collect (please keep them in a separate files with predictable names):
facter fqdn
hostname
hostname -f
puppet agent -t

Everything inside of that zip should be well structured to make it easy to understand and analyze.
example:
zip/
...../logs/
...../configs/
...../commands_output/

Create list of all entries that connected to user

Before we can actually delete user we need to know what to do with all stuff produced by user. To know that we need to make sure we know about all entities what user can have.
For example

  • Source files
  • Factories
  • Recipe

As a result of this issues we need to initiate discussion what to do with this entries: keep, delete, update somehow

Validate options of Codenvy bootstrap script

Validate options which user passes to Codenvy bootstrap script.
If option is unknown, display warning at start like the follow:
{noformat}
[CODENVY] Welcome. This program installs Codenvy 3.14.2-SNAPSHOT.
[CODENVY] !!! You passed a parameter named no-proxy. This is an unrecognized parameter.
[CODENVY] !!! You passed a parameter named http-proxy. This is an unrecognized parameter.
[CODENVY] !!! You passed a parameter named https-proxy. This is an unrecognized parameter.
[CODENVY] Proceed? [y/N]
{noformat}

Sometimes machine.ws_agent.run_command can't execute properly

Sometimes when we starting dev machine exec which extract and launch ws agent does not work. there is no any error or useful message and as result we have running docker container without ws agent inside.
as a workaround we've added sleep 5 sec to command due to assumption that mount point inside of a docker container is not available immediately after starting container.
machine.ws_agent.run_command=sleep 5 && rm -rf ~/che && mkdir -p ~/che && unzip -qq /mnt/che/ws-agent.zip -d ~/che/ws-agent && ~/che/ws-agent/bin/catalina.sh run
But it seems that it's not solved our problem it is still actual.

Create JPA based CommonPermissionsStorage

Todo:

  • Create TCKs(Reuse exsiting MongoDB based tests)
  • Implement CommonPermissionsStorage based on JPA

Data object structure:

public class Permission {
    private String       user;
    private String       domain;
    private String       instance;
    private List<String> actions;
}

Change default dns http://codenvy to any dns which contain dot symbol

Problem:
customers report that our default dns http://codenvy does not work. After investigation we've found that dns services may not work with dns names without dot symbols.

from the official dns service FAQ

Q: Names on the internet are working fine, but looking up local names 
   from /etc/hosts or DHCP doesn't seem to work.

A: Resolver code sometime does strange things when given names without
   any dots in.

We must change our default dns to something that contain dot symbol in it.
Proposal: change dns http://codenvy to http://codenvy.onprem

Problem Deploying to GAE

Authentication process to deploy to GAE is extremely burdensome (unlike with codenvy 3, where it was built in). The only way to do it is manually from the terminal - which requires cutting and pasting a long authentication string to the browser - then cutting and pasting the authentication code back again. (And then - today - ctrl-C copy has stopped working so it cannot work at all.)

Every startup of codenvy creates a new machine name - which is passed to gae as part of the authentication - which means there is no way to save credentials in a file.

We would like a plugin that will automate the authentication process.

Marketo interceptors doesn't send data to the Marketo

After profile service refactoring user profile data doesn't send to the Marketo.
Expected behavior: after creation new user or update profile this data should be send to the Marketo.
Observed behavior: after creation new user or update profile data doesn't send to the Marketo.
customer-saas version: 4.5.0

Create a service that will delete a user from marketo

Here's a PHP script that deletes a specified user from marketo:

<?php
header('Access-Control-Allow-Origin: *');  
$email=$_POST['email'];
//$email='[email protected]';

$jsonurl = "https://519-AYY-549.mktorest.com/identity/oauth/token?grant_type=client_credentials&client_id=0671decb-31d1-4b12-93e5-de229f67fa2b&client_secret=ddnjWihqIDmisQVP357w6Zz2PjdgtJjr";

$json = file_get_contents($jsonurl);
$obj=(json_decode($json));
$at= $obj->access_token;
$jsonurl = "https://519-AYY-549.mktorest.com/rest/v1/leads.json?filterType=email&filterValues=".$email."&fields=email&firstName&access_token=".$at;
$json = file_get_contents($jsonurl);
$obj=(json_decode($json));
$result= $obj->result[0];
$mid = $result->id;
if (isset($mid)){
$lead1 = new stdClass();
$delete = new DeleteLead();
print_r($delete->postData($mid,$at));
}
else{
echo "Email: $email doesn't exist in the Database.";
}

class DeleteLead{
    public function postData($id,$at){
    $url= "https://519-AYY-549.mktorest.com/rest/v1/leads.json?access_token=".$at;
    $body = '{"input":[{"id":'.$id.'}]}';
    $ch = curl_init($url);
    curl_setopt($ch,  CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('accept: application/json','Content-Type: application/json'));
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
    curl_getinfo($ch);
    $response = curl_exec($ch);
$obj=(json_decode($response));
$result= $obj->result[0];
$status = $result->status;
if ($status=="deleted"){
return "Success.";}
else {return "Problem performing the 'Delete'!";}

}
}
?>

Client ID and secret are in the php script.
We need to add request filter on user deletion to delete same user from Marketo as well.

help plz cant find my data when added some git

hi i want to creat antispam/anti_link robot for telegram group;(
and this is my source for creat a bot
sudo apt-get update

sudo apt-get upgrade

sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make unzip git redis-server g++ libjansson-dev libpython-dev expat libexpat1-dev

cd $HOME

git clone https://github.com/KnightTeam/KnightTeam

cd KnightTeam

chmod +x launch.sh

./launch.sh install

./launch.sh
http://uupload.ir/files/s2ad_capture.png
but when i type this
git clone https://github.com/KnightTeam/KnightTeam
i want that for sudo in config.lua but there is no data added here :( where can i find my folder proeject
when i added this gitub ?

Codenvy standalone server. Workspaces creation hanging.

Hello, Codenvy Team.
Please help me with the following issue.
I'm installing codenvy server on CentOS 7.2 x64 machine (actually it is Amazon EC2 instance).
I have sufficient number of processors and memory.
I'm using single node installation with defaults.
After the installation i can reach Codenvy by a link http://ip_address_of_codenvy_machine
But when i'm trying to create a workspace the process is hanging on the step of injecting and starting ws_agent. I attached the screenshot.
During the process of creation i can see that docker container is created. So, i increased the timeout to have enough time to investigate an issue (all customizations to codenvy config were done in Puppet) and then i opened a terminal to that container

docker exec -it <container_id> bash

I saw in the ws_agent (tomcat) log file (catalina.out) that the process is hanging after these lines


[STDOUT] 2016-07-18 09:29:15,275[ost-startStop-1] [INFO] [o.a.c.startup.HostConfig 1030] - Deploying web application directory /home/user/che/ws-agent/webapps/ROOT
[STDOUT] 2016-07-18 09:29:15,362[ost-startStop-1] [INFO] [o.a.c.startup.HostConfig 1142] - Deployment of web application directory /home/user/che/ws-agent/webapps/ROOT has finished in 87 ms
[STDOUT] 2016-07-18 09:29:15,368[main] [INFO] [o.a.c.http11.Http11NioProtocol 470] - Starting ProtocolHandler ["http-nio-4401"]
[STDOUT] 2016-07-18 09:29:15,373[main] [INFO] [o.a.catalina.startup.Catalina 642] - Server startup in 9850 ms


Then i decided to see what network ports are opened in the container

lsof -i

i can see these ones


COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 22 user 23u IPv6 54794 0t0 TCP *:52129 (LISTEN)
java 22 user 55u IPv6 54796 0t0 TCP *:4401 (LISTEN)
java 22 user 59u IPv6 54798 0t0 TCP *:32002 (LISTEN)
java 22 user 60u IPv6 54799 0t0 TCP *:32102 (LISTEN)
java 22 user 69u IPv6 54070 0t0 TCP localhost:4405 (LISTEN)
java 22 user 230u IPv6 54067 0t0 TCP 060571bacb15:55640->codenvy:http (ESTABLISHED)


I have a working codenvy server in my VMWare home machine so i did the same thing there
and see the same ports + the port for terminal.
So the process is hanging on the command

sleep 5 && mkdir -p ~/che && rm -rf ~/che/* && unzip -q /mnt/che/ws-agent.zip -d ~/che/ws-agent && ~/che/ws-agent/bin/catalina.sh run

and never reaches this command

mkdir -p ~/che && cp /mnt/che/terminal -R ~/che && ~/che/terminal/che-websocket-terminal -addr :4411 -cmd /bin/bash -static ~/che/terminal/ -path '/[^/]+'

Okay after that thoughts and hours of reading issues here i decided to check firewall. I thought that may be ws_agent couldn't interract back with codenvy server. So i tried to connect from inside docker container

curl -v http://codenvy/api

and the result is
____________________________________________________--

  • Hostname was NOT found in DNS cache
  • Trying 172.17.42.1...
  • Connected to codenvy (172.17.42.1) port 80 (#0)

    GET /api HTTP/1.1
    User-Agent: curl/7.38.0
    Host: codenvy
    Accept: /

    < HTTP/1.1 302 Found
  • Server Apache-Coyote/1.1 is not blacklisted
    < Server: Apache-Coyote/1.1
    < Location: /api/
    < Transfer-Encoding: chunked
    < Date: Mon, 18 Jul 2016 10:02:08 GMT
    <
  • Connection #0 to host codenvy left intact

After that i added logging chain to my HOST iptables but logging didn't show any blocked packets.

iptables -L -n --line-numbers


Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 f2b-SSH tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
3 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53
7 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:53
8 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:81
10 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:443
11 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:444
12 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:389
13 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:5000
14 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8000
15 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:9000
16 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:10050
17 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:10051
18 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:27017
19 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:32001
20 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:32101
21 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:161
22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpts:32768:65535
23 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8101
24 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:8140
25 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:32102
26 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:32202
27 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:5432
28 LOGGING all -- 0.0.0.0/0 0.0.0.0/0
29 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 DOCKER-ISOLATION all -- 0.0.0.0/0 0.0.0.0/0
2 DOCKER all -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
4 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
6 DOCKER all -- 0.0.0.0/0 0.0.0.0/0
7 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
9 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
10 ACCEPT all -- 0.0.0.0/0 172.17.0.0/16
11 LOGGING all -- 0.0.0.0/0 0.0.0.0/0
12 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination

Chain DOCKER (2 references)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 172.17.0.1 tcp dpt:4411
2 ACCEPT tcp -- 0.0.0.0/0 172.17.0.1 tcp dpt:4403
3 ACCEPT tcp -- 0.0.0.0/0 172.17.0.1 tcp dpt:4401
4 ACCEPT tcp -- 0.0.0.0/0 172.17.0.1 tcp dpt:3306
5 ACCEPT tcp -- 0.0.0.0/0 172.17.0.1 tcp dpt:80
6 ACCEPT tcp -- 0.0.0.0/0 172.17.0.1 tcp dpt:22

Chain DOCKER-ISOLATION (1 references)
num target prot opt source destination
1 DROP all -- 0.0.0.0/0 0.0.0.0/0
2 DROP all -- 0.0.0.0/0 0.0.0.0/0
3 RETURN all -- 0.0.0.0/0 0.0.0.0/0

Chain LOGGING (2 references)
num target prot opt source destination
1 LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 10/min burst 5 LOG flags 0 level 7 prefix "DROP: "
2 DROP all -- 0.0.0.0/0 0.0.0.0/0

Chain f2b-SSH (1 references)
num target prot opt source destination
1 RETURN all -- 0.0.0.0/0 0.0.0.0/0


Please help!!!

codenvy_workspace_hanging

Continuous Integration docs

Hi all,

the entire documentation about Continuous Integration ( http://codenvy.readme.io/docs/continuous-integration ) is as short as:

Coming soon...

Does it mean that there's no continuous integration but this feature will come soon or does it mean the there is continuous integration and the documentation is coming?
Could you please provide more info about it and, if possible, an informative link or example?

Regards

Adding documentation to use alternative IDE

The codenvy website mentions ( https://codenvy.com/resources/white-papers/localhost-is-killing-software-delivery/ ) :

Use Any IDE. Whether it is IntelliJ, Sublime, Eclipse, emacs, vi or our browser-based IDE, we are indifferent.

However, no specific documentation seems to be available.
Could you please provide an example or point me to the related docs. This feature is a quite important point in an evaluation of codenvy that I am preparing for my company.

Database consolidation - consolidating LDAP, Mongo, Postgres into common repository

Continuation of eclipse-che/che#1790 for Codenvy

  • FactoryDao implementation on JPA #392
  • PreferenceDao implementation on JPA #393
  • WorkerDao implementation on jpa #394
  • Create JPA based CommonPermissionsStorage #395
  • Integrate JPA components/tools with Codenvy infrastructure #396
  • Support PostgreSQL DB when change admin password of Codenvy onprem by Installation Manager #466
  • Bypass usage of LDAP when getting number of Codenvy on-prem users in Installation Manager #584
  • Rework permissions mechanism for stacks and recipes #505
  • Remove ldap and mongo from puppet configuration # #578
  • JPA support of AdminUserService.getAll method #586
  • Adapt new permission mechanism to ACL wildcard #666

All the existing data should be migrated to the new storage.

For each MongoDB based storage, consider using driver directly for fetching ALL the existing entity IDENTIFIERS (because DAOs don't support such functionality) and then use MongoDB based DAOs for fetching entities and JPA based DAOs for storing data.

For LDAP based storages(Profile, User) use AdminUserDao for getting all the users,
and then reuse Jpa based implementations for storing them.

In the way described above the migration itself shouldn't be painful at all, as existing storages are responsible for objects fetching and storing.

Please note that the order of migration is important.

  • Workspace data migration tool from MongoDB to PostgreSQL #475
  • SSH data migration tool from MongoDB to PostgreSQL #474
  • Snapshot data migration tool from Mongo to PostgreSQL #473
  • Stack data migration tool from Mongo to PostgreSQL #472
  • Recipe data migration tool from Mongo to PostgreSQL #471
  • User preferences migration tool from Mongo to PostgreSQL #470
  • User and profile data migration tool from LDAP to PostgreSQL #469
  • Factory migration tool from MongoDB to PostgreSQL #468
  • Permissions storage migration tool from Mongo to PostgreSQL #467
  • Cascading removal of the stack and recipe permissions. #645

Convert Chrome Store listing to beta.codenvy.com

The Chrome Store listing is still pointing to Codenvy 3. It should be updated to use beta.codenvy.com and include the attached two screenshots and this video: https://www.youtube.com/watch?v=y4wdplYj6qs

new-dashboard-screenshot

1-cloud-ide

The description should be updated to use the following:


Based on the open source Eclipse Che project, Codenvy is a cloud IDE and developer workspace server that allows anyone to contribute to a project without having to install software.

• One-click project onboarding makes getting started easy
• Containerized workspaces let you use any stack
• Use any programming language or IDE
• Integrate version control and issue management seamlessly
• Full root access and SSH (so you can use any IDE)
• Retain muscle memory with vi and emacs key bindings
• Work online, offline with CLI sync, or behind the firewall with Codenvy on-premises

Codenvy is offered as SaaS, on-premises and white label. Or, badge your public git repo to give anyone instant access to review or contribute to your project.


Version should be updated to match the current product version live when the store was updated.

Write a codenvy onprem runbook

This is a part of #412 epic

We need set of docs which will explain how to make codenvy onprem instance production grade system with sizing / scaling and etc. We can start with documenting of what we are doing for our saas production.

Integration with customers ldap

In onprem installation customers usually have their own ldap based user databases.
And they want:

  • Provide only read-only access
  • Be able to define subset of user who can access to codenvy
  • Use same username - password database
  • Do not double copy sensitive information like passwords
  • Study how to integrate with customers ldap #399
  • Implement Ldap Synchronizer for Users & Profiles #400
  • Authentication using external ldap #793
  • Describe different type of Ldap authentication (AD, Direct, Anonymous, Authenticated) #812
  • Describe and test SASL configuration of LDAP connection #813
  • Describe Ldap connection pool configuration #814
  • Describe and test ssl configuration of ldap connection #815

Account and resources management

Accounts for resources management.
https://wiki.codenvycorp.com/display/PSR/Codenvy+4+Account+for+resources+management
It should be implement in some steps:

At first it is need to implement model with accounts, organizations, resources, licences which will allow to control resources usage by users.

Proposed to have next model https://github.com/sleshchenko/codenvy/pull/6/files
Then it is need to implement DAOs for it and minimal set of rest services for ability to start work on UI.
Implement checking of resources limits of workspace starting and machine adding to started workspace

DoD:

Organization management:

  • create, delete, update organization : #552

Members management:

  • add, remove member : #552
  • set, remove members permission : #552

Workspaces management:

  • create, remove workspaces thich belong to account (user or organization) #419
  • fetch workspaces by namespace (account name to wit user or organization name) #419

Resource management:

  • get license that defines resources of account #410
  • get list of resources which are available for usage, used #410
  • don't start workspace if there is no enough number of resources #410

Bugfixes

  • Deny users to create organization with name that is url incompatible or reserved: #674
  • Rework members of organizations to fix build: #673
  • Personal account was reworked from inheritance to delegating: #672

UI Epic: #548

Running a Java Applet on Codenvy's android emulator

I have a program for a Java applet which runs fine on desktop IDEs but I can't get it to run in Codenvy. When I run the program with a Java7 and VNC runner, it seems to run without errors, and gives me an application link, which takes me to a grey screen. Right clicking allows me to select the emulator, which opens an android emulator; however, I can't see how to load my program into the emulator. Any ideas? Sorry if I'm missing something obvious, I'm very new to both Java and Codenvy.

I've attached a screenshot of my program, and the android emulator as it currently loads.

Thanks

screenshot
screenshot3

Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed.

Hi, @TylerJewell

I had git clone codenvy to local, and when run 'mvn clean install -e' some error happend.
Cloud you give me some suggistion or tell me the reason?

My environment like this:

Apache Maven 3.0.5
Maven home: /usr/share/maven
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: /home/scm/jdk1.8.0_60/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.2.0-23-generic", arch: "amd64", family: "unix"

Error:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4:enforce (enforce-maven-version) on project onpremises-assembly-parent: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4:enforce (enforce-maven-version) on project onpremises-assembly-parent: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed.
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed.
        at org.apache.maven.plugins.enforcer.EnforceMojo.execute(EnforceMojo.java:194)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        ... 19 more

Thanks.

Create migration tool to migrate from LDAP/MongoDB to PostgreSQL

All the existing data should be migrated to the new storage.

For each MongoDB based storage, consider using driver directly for fetching ALL the existing entity IDENTIFIERS (because DAOs don't support such functionality) and then use MongoDB based DAOs for fetching entities and JPA based DAOs for storing data.

For LDAP based storages(Profile, User) use AdminUserDao for getting all the users,
and then reuse Jpa based implementations for storing them.

In the way described above the migration itself shouldn't be painful at all, as existing storages are responsible for objects fetching and storing.

Please note that the order of migration is important.

  • Workspace data migration tool from MongoDB to PostgreSQL #475
  • SSH data migration tool from MongoDB to PostgreSQL #474
  • Snapshot data migration tool from Mongo to PostgreSQL #473
  • Stack data migration tool from Mongo to PostgreSQL #472
  • Recipe data migration tool from Mongo to PostgreSQL #471
  • User preferences migration tool from Mongo to PostgreSQL #470
  • User and profile data migration tool from LDAP to PostgreSQL #469
  • Factory migration tool from MongoDB to PostgreSQL #468
  • Permissions storage migration tool from Mongo to PostgreSQL #467

Maven dependencies not resolved by IDE

Originally from here: https://groups.google.com/a/codenvy.com/forum/#!topic/codenvy/panZOL0tjUk

Original Issue:
I'm having an issue with Maven projects in Codenvy 4.4 On Prem. I am able to build the project successfully with Maven, however the IDE does not resolve the dependencies defined in the pom.xml and reports them in error. The IDE is able to resolve the classes in my src folder and works correctly for syntax highlighting and code completion etc. As a sanity check I loaded one of the sample java projects with external dependencies, the web-java-spring project in the same workspace, and it has the same issues.

Per suggestions on google groups, i tried adding the proxy to .bashrc. Latest status:
If I am understanding correctly , not only does Maven need internet access to download the dependencies but the Codenvy Maven plugin does as well to download the files independently. I have tried adding the proxy to ~/.bashrc and it had no effect. Is there any action i need to take to make the Codenvy Maven plugin 'refresh' or retry to pick up the new settings? Restarting the workspace didn't work and cleared out the .bashrc file.

Managing machine snapshots

I take a machine snapshots to hold new state of machine after installing packages. Where these snapshot files stored? Can we have a history of taken snapshots?

And what's the use case of Source URL of machine?

Existing workspaces taking 10+ minutes to load after being stopped

It is taking 10+ minutes to start an existing workspace on the Codenvy Beta while it only takes a couple of seconds to start Che on a local machine after first install. This is unacceptable as Che should have better performance on a server class machine than on a local host. It appears that perhaps the caching features of Docker aren't being used properly or are being bypassed by the Codenvy infrastructure.

For caching best practices:
https://www.ctl.io/developers/blog/post/more-docker-image-cache-tips/

There are also documented issues with Vagrant and Docker, and led to the development of vagrant-cachier. It is actually guaranteed to reduce the amount of coffee consumed while waiting for docker images to load on Vagrant:
http://fgrehm.viewdocs.io/vagrant-cachier/

Also, an apt-cache proxy would help speed the initial installation for any Debian clones:
https://help.ubuntu.com/community/AptProxy

A user should be able to delete his account (with all associated resources)

We should enable users to entirely delete themselves from the system. This means deletion of such entities as user and all associated workspaces.

  • Create list of all entries that connected to user #387
  • Create a service that will delete a user from marketo #388
  • Make sure "Delete this account" Button actually deletes this account #382
  • Create a page to be displayed after user is deleted #389
  • Investigate strategies for cascade entities removing eclipse-che/che#1803

Implement Resources management API

Epic link [(https://github.com//issues/409)]

Implement Resources management API

As result of this issue there should be implemented API that will allow users to:

  • get license that defines resources of account
  • get list of resources which are available for usage, used
  • can use default number of resources

Note: in scope of current issue it is need to implement only RAM resource type

Shared workspace doesn't refresh automatically

Hi,
I created a workspace shared with a friend and inside I put the "console-java-simple" project.

Then I modified a file (added a println), and what happened is that:

  • my friend doesn't see the file modified, but the older version
  • it he builds&runs the project he has the output of newer version!

So, I think that the problem is just refreshing the file explorer. Is there any button to do that?

Implement Account API

Epic link [(https://github.com//issues/409)]

Implement Account API

As result of this issue there should be implemented API that will allow users to:

  • create, remove workspace which belong to user (personal account)
  • create, remove workspace which belong to organization (organizational account)
  • fetch workspaces which belong to some (personal or organizational) account by account name

Cannot create a workspace nor a project

Hi,

Since this morning, it's impossible for me to create a project or access the IDE of an existing workspace.

I looked in the console and I see pending calls to /api/ws

After some time, I get a WebSocket timeout.

Is there a problem with the code envy platform currently ?

Thanks a lot for your help.

Antoine.

Investigate exception 'Machine with name ws-machine already exists'

It needs to investigate exception 'Machine with name ws-machine already exists'.

We have the exception in logs on beta.codenvy.com:

2016-05-26 21:18:31,565[paceManager-331] [INFO ] [o.e.c.a.m.s.MachineManager 856] - Destroying machine [ws = workspaceqefgkxuq449bmytr: env = wksp-8bcx: machine name = ws-machine: machine id = machinehnq2j5ffa45u0h4v] 2016-05-26 21:18:32,757[paceManager-332] [INFO ] [o.e.c.a.m.s.MachineManager 162] - Creating machine [ws = workspacel6x1tnsph1q2wf6l: env = default: machine = ws-machine] 2016-05-26 21:18:32,763[paceManager-332] [ERROR] [o.e.c.a.w.s.WorkspaceManager 538] - Machine with name ws-machine already exists org.eclipse.che.api.core.ConflictException: Machine with name ws-machine already exists at org.eclipse.che.api.machine.server.MachineManager.createMachine(MachineManager.java:314) ~[che-core-api-machine-4.2.3.jar:4.2.3] at org.eclipse.che.api.machine.server.MachineManager.createMachineSync(MachineManager.java:166) ~[che-core-api-machine-4.2.3.jar:4.2.3] at org.eclipse.che.api.workspace.server.WorkspaceRuntimes.createMachine(WorkspaceRuntimes.java:490) ~[che-core-api-workspace-4.2.3.jar:4.2.3] at org.eclipse.che.api.workspace.server.WorkspaceRuntimes.startMachine(WorkspaceRuntimes.java:411) ~[che-core-api-workspace-4.2.3.jar:4.2.3] at org.eclipse.che.api.workspace.server.WorkspaceRuntimes.startQueue(WorkspaceRuntimes.java:368) ~[che-core-api-workspace-4.2.3.jar:4.2.3] at org.eclipse.che.api.workspace.server.WorkspaceRuntimes.start(WorkspaceRuntimes.java:180) ~[che-core-api-workspace-4.2.3.jar:4.2.3] at org.eclipse.che.api.workspace.server.WorkspaceManager.lambda$performAsyncStart$2(WorkspaceManager.java:522) ~[che-core-api-workspace-4.2.3.jar:4.2.3] at org.eclipse.che.api.workspace.server.WorkspaceManager$$Lambda$87/1976416230.run(Unknown Source) [che-core-api-workspace-4.2.3.jar:4.2.3] at org.eclipse.che.commons.lang.concurrent.CopyThreadLocalRunnable.run(CopyThreadLocalRunnable.java:28) [che-core-commons-lang-4.2.3.jar:4.2.3] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]

codenvy config --hostname=${hostname} fails

codenvy> config --hostname=apptium
WARNING: automatic update of IM CLI client has been failed. See logs for details                                                                                        
{
"message" : "Command execution fail. Error: Can't execute command 'COUNTER=0\n  while true; do\n  sudo puppet cert list --all | grep '\"apptium\"' &>/dev/null\n  hasCertificate=$?\n  if [[ $hasCertificate == 0 ]]; then\n     sudo systemctl restart puppetmaster\n     break\n  fi\n  sleep 10\n  let COUNTER=COUNTER+1\n  if [[ $COUNTER -eq 30 ]]; then\n     echo 'Puppet agent error' >&2\n     exit 1\n  fi\ndone\n'. Output: ; Error: Puppet agent error.",
"status" : "ERROR"
}

Show Codenvy is production grade

This is umbrella issue for things we need to do to achieve 2.2 item from Q3 plan.

  • How to diagnose failures of installation dependending upon the stage of installation.
    we will provide a tool for collecting information for troubleshooting instead of manuals this way it will be much easier for customer and we will have all information we need by 1 request. #413
  • How do you setup your operations environment to ensure that Codenvy never crashes at large scale usage :) #414
  • Create set of CI jobs to trigger in case of problems with SAAS when no any Admin available to handle that. #433

Bitbucket oAuth is broken

Steps to reproduce:

  1. Go to Bitbucket settings > OAuth and a new oAuth consumer with the following callback URL: http://$hostname/api/oauth/callback
  2. Save client ID and secret to Puppet configuration on the server in /etc/puppet/manifests/nodes/codenvy/codenvy.pp
  3. Run puppet agent -t.
  4. Try to import some Bitbucket project.

As a result, error will appear, saying that automatic upload is not supported for some providers.

System resource management and production readiness

This epic is related to all the work we have to do in order to make resource management resistant to unplanned limitations.

  • Prevent workspace starting if the system achieved resources limit #408
  • Limit Machine logs queue heap memory consumption #457
  • Create 'resource reached error' table in dasboard #502

Workspace should update project by path instead by name

As project name is not a mandatory attribute for the project, we need to change behaviour of updating project on the workspace {{org.eclipse.che.api.workspace.server.WorkspaceService#updateProject}} to search project by its path, not by name, otherwise we can get a NPE.
if (!workspace.getConfig().getProjects().removeIf(project -> project.getName().equals(update.getName()))) { throw new NotFoundException("Workspace " + id + " doesn't contain project " + update.getName()); }

Copy/paste not working in command configuration dialog (Chrome only)

In Chrome (51.0.2704.103 (64-bit)) on Mac OS X its not possible to copy the value from the command configuration dialog fields (i.e. "command line" field) into the clipboard via Command+c or otherwise in order to paste it again.

Pressing Command+c does not copy the value into the clipboard.

It works fine in Firefox, does not work in Chrome. Haven't tested it in Chrome on Windows yet.

Screenshot:

Screensho

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.