Coder Social home page Coder Social logo

ovpl's Introduction

Settings for ADS

Execute the following steps, to configure and then run ADS as a service:

Edit the ovpl/config/ directory

Copy ovpl/config/sample_config.json to ovpl/config/config.json and make the following changes:

  • To set the proxies.
"ENVIRONMENT": {
    "HTTP_PROXY":"http://proxy. vlabs.ac.in:8080",
    "HTTPS_PROXY":"http://proxy.vlabs.ac.in:8080"
},
  • if no proxies are used,
"ENVIRONMENT": {
    "HTTP_PROXY":"",
    "HTTPS_PROXY":""
},
  • Set the COOKIE_SECRET value in CONTROLLER_CONFIG to some long randomly generated string.
"COOKIE_SECRET": "<generate a long random UUID>",
  • Set the SERVER_IP in LOGSERVER_CONFIGURATION to the IP address of the

machine on which the ADS services are running.

"LOGSERVER_CONFIGURATION": {
            "SERVER_IP": "ads-server-private-ip",
	    },
  • Choose POOLID and ADAPTERID from VPOOLS section. Make the appropriate change in ADAPTER_TO_USE. The ADAPTERID for aws_adapter, centos_openvz_adapter and centos_bridged_adapter is 1, 2 and 3 respectively.
"ADAPTER_TO_USE" : {"POOLID" : 1, "ADAPTERID" : 2}

Settings for base_config

  1. Copy config/adapters/sample_base_config.py to config/adapters/base_config.py. For aws_adapter, no change in this file has to be done. For centos_openvz_adapter and centos_bridged_adapter make the following changes in the file:
    1. If the services are running on the base machine, set ADS_ON_CONTAINER to False and copy public key (id_rsa.pub) to authorized_keys
    2. If the services are running on a container, set ADS_ON_CONTAINER to True and copy the public key of the container to the authorized_keys of the base machine.
    3. Set BASE_IP_ADDRESS = “root@<IP>” where IP is the ip address of base machine on which containers are created.
    4. Set ADS_SERVER_VM_ID to CTID of container running ADS. ADS_SERVER_VM_ID = “<CTID>”
    5. SUBNET field to match with the subnet of your base machine If the ip address of your base machine is 10.2.58.XXX, SUBNET = [“10.2.58.12/28”]
    6. ADAPTER_NAME_SERVER, set the field to a specific nameserver that is used in the cluster or leave it as ‘inherit’ to use the nameserver configuration from the base machine.
    7. SECRET_KEY, used to authenticate the ADS WEB APP.

Settings for centos_bridged_adapter

Copy config/adapters/sample_centos_bridged_config.py to config/adapters/centos_bridged_config.py, and change the SUBNET_BRIDGE in the file.

Settings for centos_openvz_adapter

  • Copy config/adapters/sample_centos_openvz_config.py to config/adapters/centos_openvz_config.py.

Settings for aws_adapter

Copy config/adapters/sample_aws_config.py to config/adapters/aws_config.py, and edit the values accordingly. The private key key_file_name.pem should be copied inside src/ directory. See here for more details.

Commands to Manage the Service

  • As root, go into ovpl directory and run manage_services.sh file:
$ cd ovpl
$ ./manage_services (or) ./manage_services start
  • To stop the services
$ cd ovpl
$ ./manage_services stop
  • To stop or start specific service use ./manage_services.sh [action] [services]
    • [action] = start (or) stop
    • [services] = LOGGER (or) ADAPTER (or) CONTROLLER
$ cd ovpl
$ ./manage_services.sh start LOGGER
  • For more help use ./manage_services.sh --help.

Setting up ADS-web-app

Install dependencies

This assumes apache server is installed. If not, please install the apache server.

sudo su -
yum update -y
yum install epel-release
yum install "mod_wsgi" -y
yum install python-pip
cd /root/ovpl/src/ads-web-app
python setup.py install

rsync -avz --progress /root/ovpl/src/ads-web-app /var/www/html/
chmod -R 777 /var/www/html/ads-web-app

Setup Google Oauth credentials

  • Create a project at Google Dashboard and create Oauth credentails.
  • Provide CONSUMER_KEY and CONSUMER_SECRET in /var/www/html/ads-web-app/config.py.
CONSUMER_KEY = "<consumerkey>"
CONSUMER_SECRET = "<consumer secret key>"

Setup ADS credentials

  • Provide ADS running server IP/Domain name to variable ADS_URL.
  • Set secret key of ADS server to variable ADS_SECRET_KEY.
ADS_URL = "http://<ip/domain>:5000"
ADS_SECRET_KEY= "defaultadskey"

  • Add emails ids to AUTHORIZED_USERS
AUTHORIZED_USERS = [
    "[email protected]"
]

Access ADS from browser

  • Restart Flask server
cd /var/www/html/ads-web-app/
python app.py &
  • Open the location http://ads-server-public-ip:8080 from the browser and provide the lab id, lab sources url and version/tag.
  • View the logs at /root/logs/ovpl.log by
tail -f /root/logs/ovpl.log

Steps to manually create a container


  1. vzctl create 101 –ostemplate ubuntu-12.04-custom-x86_64 –ipadd 10.2.58.3 –diskspace 10G:15.0G –hostname cse02.vlabs.ac.in
  2. vzctl start 101
  3. vzctl set 101 –nameserver inherit –ram 256M –swap 512M –onboot yes –save

ovpl's People

Contributors

avinassh avatar bijudas45 avatar bollu avatar bsravanthimodepu avatar dprasadm avatar ecthiender avatar hanokk avatar khushpreet-kaur avatar ksripathi avatar madhavipuliraju avatar manasalingamallu avatar nrchandan avatar prakashbh avatar travula avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ovpl's Issues

[AWSAdapter] - Use key file path instead of key file name

In the AWSAdapter, currently the config file takes in the key file name and the adapter code assumes the key file is the current directory and assumes it is a .pem file(attaches a .pem extension to the end of the key file name). This should be changed to have the entire key file path in the config file. Then the adapter can be agnostic about the type and location of the key file.

Add feature to ADS: Pull the changes from repository.

Feature for ADS:

Current issue with ADS setup: If we want to deploy same lab again ( once it is hosted/deployed using ADS) and again, ( present situation) we have to remove/delete corresponding repository instead of pulling changes made in the repository. Then only we are able to deploy same lab again using ADS.

Feature :
Instead of deleting ( manually ) corresponding lab repository in ADS server( ~/labs/ directory), it would be good just pulling changes made in the repository.

Additional Feature (OPTIONAL) : Having a backup of existing repository with the date as an extension.

Services are not secure

Services (VMManagerServer, CentOSVZAdapterServer, ControllerServer) are currently unauthenticated and communications are insecure. Both need to be addressed.

Lint cleanup

Run a python lint on all the files to clean up code according to PEP8 guidelines.

ADS issue when running ./manage_services.sh start

Getting following error

./manage_services.sh start
mongod (pid 14977) is running...
Starting all services.
http logging service started
localhost:8239
localhost:8239
ERROR:tornado.general:Uncaught exception
Traceback (most recent call last):
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/http1connection.py", line 722, in _server_request_loop
ret = yield conn.read_response(request_delegate)
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/gen.py", line 1055, in run
value = future.result()
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/concurrent.py", line 238, in result
raise_exc_info(self._exc_info)
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/gen.py", line 307, in wrapper
yielded = next(result)
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/http1connection.py", line 159, in _read_message
max_bytes=self.params.max_header_size)
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/iostream.py", line 256, in read_until_regex
self._try_inline_read()
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/iostream.py", line 720, in _try_inline_read
self._read_from_buffer(pos)
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/iostream.py", line 778, in _read_from_buffer
self._run_read_callback(pos, False)
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/iostream.py", line 687, in _run_read_callback
future.set_result(self._consume(size))
File "/usr/lib/python2.6/site-packages/tornado-4.5.1-py2.6-linux-x86_64.egg/tornado/iostream.py", line 910, in _consume
b = (memoryview(self._read_buffer)
NameError: global name 'memoryview' is not defined

CentOS-6.9
python version : 2.6.x

Simultaneous use of CentOSVZAdapter will cause IP address conflict

CentOSVZAdapter relies on a function called find_available_ip which tries to ping all IP addresses in a subnet and find an IP.
When this adapter is used simultaneously, in the same subnet, there is a high potential of IP address conflicts among multiple containers.

Proposed Solution: find_available_ip should maintain a map of allocated and available IP addresses and act more like a DHCP server.

Unable to resolve DNS names within OpenVZ container

Hey!

So, now, I'm able to clone the github repo, and the VM launches too. However, the name resolution within the VM doesn't seem to be working, and I'm stumped as to why this is happening. Since the VM's are all generated from the same pre-baked template, I see no reason as to why this should not work. However, weirdly enough, It's not working.

I cated the vmmanager.log. Here are the results:

root@cse02:~/VMManager/log# cat vmmanager.log 
2014-09-23 09:50:11 PM - INFO : [VMManagerServer.py:71] : VMManagerServer: __main()
2014-09-23 09:50:11 PM - INFO : [VMManagerServer.py:71] : VMManagerServer: __main()
2014-09-23 09:50:12 PM - INFO : [VMManagerServer.py:61] : VMManagerServer: TestLabHandler: post(): post_data = {'lab_src_url': '[email protected]:virtual-labs/cse02-programming.git'}
2014-09-23 09:50:12 PM - INFO : [VMManagerServer.py:61] : VMManagerServer: TestLabHandler: post(): post_data = {'lab_src_url': '[email protected]:virtual-labs/cse02-programming.git'}
2014-09-23 09:50:12 PM - INFO : [VMManager.py:146] : Starting test_lab
2014-09-23 09:50:12 PM - INFO : [VMManager.py:146] : Starting test_lab
2014-09-23 09:50:12 PM - DEBUG : [VMManager.py:107] : git clone [email protected]:virtual-labs/cse02-programming.git /root/VMManager/lab-repo-cache/cse02-programming
2014-09-23 09:50:12 PM - DEBUG : [VMManager.py:107] : git clone [email protected]:virtual-labs/cse02-programming.git /root/VMManager/lab-repo-cache/cse02-programming
Cloning into '/root/VMManager/lab-repo-cache/cse02-programming'...
ssh: Could not resolve hostname altssh.bitbucket.org: Temporary failure in name resolution
fatal: The remote end hung up unexpectedly
2014-09-23 09:50:52 PM - ERROR : [VMManager.py:111] : git clone failed for repo cse02-programming: Command 'git clone [email protected]:virtual-labs/cse02-programming.git /root/VMManager/lab-repo-cache/cse02-programming' returned non-zero exit status 128
2014-09-23 09:50:52 PM - ERROR : [VMManager.py:111] : git clone failed for repo cse02-programming: Command 'git clone [email protected]:virtual-labs/cse02-programming.git /root/VMManager/lab-repo-cache/cse02-programming' returned non-zero exit status 128

Name resolution is important for it to be able to pull the repos from bitbucket, so I'm not able to test the entire workflow without name resolution.

It clearly says

ssh: Could not resolve hostname altssh.bitbucket.org: Temporary failure in name resolution
fatal: The remote end hung up unexpectedly

I tried pinging within the VM - same story. Direct IP pings to work (to 8.8.8.8) for example, but pinging to www.google.com fails.

root@cse02:~/VMManager/log# ping www.google.com
ping: unknown host www.google.com

It maybe because I'm using Vagrant, but I seriously doubt it - the Vagrant box is perfectly fine, and I can ping, cURL, wget, whatever from the Vagrant box so I don't think that's the case. I'm suspecting that there's something wrong with my base VM image.

Help please? :)

Thanks!

EDIT - I tried cloning my dotfiles repo over HTTPS, and it turns out that the proxy is set by default to proxy.iiit.ac.in. That seems to be important - the proxy will not remain the same when we migrate this to other data centers. However, that is completely tangential to all of this. It still does not explain why I am unable to ping (since AFAIK ping does not depend on proxy settings at all).

Also, even after unsetting both the http_proxy and the https_proxy, git clone over both HTTPS and SSH do not work. Again, this makes no sense >_<

[user-auth] implement email check of authorized users

Right now in user authentication(user-auth branch), a person has no way finding out if he is authorized to deploy a lab before trying log in.
He/she has to attempt to login(go through the Persona flow) and then only know if they are authorized to deploy labs.

We can implement a check on the same login page, where they enter their email to check if they are an authorized user of ADS.

[CentOSVZAdapter] [CentOSBridgeVZAdapter] specifying OS which is not supported, silently fails lab deployment - gives misleading errors

When an OS is specified in the labspec which is not supported, the find_os_template function in CentOSVZAdapter and CentOSBridgeVZAdapter silently returns from the function instead of raising and exception.
As a result, the error is caught in construct_vzctl_args as the os_template is set to None.

More specifically, the following error is thrown:

[D 150506 02:37:06 CentOSBridgeVZAdapter:382] hostname = virt-eng.vlabs.ac.in, lab_ID = virt-eng, adapter_hostname = vlabs.ac.in
[D 150506 02:37:06 CentOSBridgeVZAdapter:383] ostemplate = None, disk_soft = 10G, disk_hard = 15.0G, host_name = virt-eng.vlabs.ac.in
[E 150506 02:37:06 web:1421] Uncaught exception POST /api/1.0/vm/create (::1)
    HTTPServerRequest(protocol='http', host='localhost:8000', method='POST', uri='/api/1.0/vm/create', version='HTTP/1.1', remote_ip='::1', headers={'Content-Length': '2805', 'Host': 'localhost:8000', 'Accept-Encoding': 'gzip, deflate', 'Content-Type': 'application/x-www-form-urlencoded', 'Connection': 'keep-alive', 'Accept': '*/*', 'User-Agent': 'python-requests/2.6.2 CPython/2.6.6 Linux/2.6.32-042stab090.5'})
    Traceback (most recent call last):
      File "/usr/lib/python2.6/site-packages/tornado-4.1-py2.6-linux-x86_64.egg/tornado/web.py", line 1346, in _execute
        result = method(*self.path_args, **self.path_kwargs)
      File "adapters/AdapterServer.py", line 39, in post
        (success, vm_id) = adapter_instance.create_vm(lab_spec)
      File "/root/ovpl/src/adapters/CentOSBridgeVZAdapter.py", line 159, in create_vm
        (vm_create_args, vm_set_args) = construct_vzctl_args(lab_spec)
      File "/root/ovpl/src/adapters/CentOSBridgeVZAdapter.py", line 387, in construct_vzctl_args
        " --hostname " + host_name
    TypeError: cannot concatenate 'str' and 'NoneType' objects
[E 150506 02:37:06 web:1825] 500 POST /api/1.0/vm/create (::1) 3074.42ms
[D 150506 02:37:06 VMPool:87] VMPool: create_vm(): Response text from adapter: Traceback (most recent call last):
      File "/usr/lib/python2.6/site-packages/tornado-4.1-py2.6-linux-x86_64.egg/tornado/web.py", line 1346, in _execute
        result = method(*self.path_args, **self.path_kwargs)
      File "adapters/AdapterServer.py", line 39, in post
        (success, vm_id) = adapter_instance.create_vm(lab_spec)
      File "/root/ovpl/src/adapters/CentOSBridgeVZAdapter.py", line 159, in create_vm
        (vm_create_args, vm_set_args) = construct_vzctl_args(lab_spec)
      File "/root/ovpl/src/adapters/CentOSBridgeVZAdapter.py", line 387, in construct_vzctl_args
        " --hostname " + host_name
    TypeError: cannot concatenate 'str' and 'NoneType' objects

[E 150506 02:37:06 VMPool:96] VMPool: create_vm(): Error communicating with adapter: VMPool: create_vm(): Error creating VM: Traceback (most recent call last):
      File "/usr/lib/python2.6/site-packages/tornado-4.1-py2.6-linux-x86_64.egg/tornado/web.py", line 1346, in _execute
        result = method(*self.path_args, **self.path_kwargs)
      File "adapters/AdapterServer.py", line 39, in post
        (success, vm_id) = adapter_instance.create_vm(lab_spec)
      File "/root/ovpl/src/adapters/CentOSBridgeVZAdapter.py", line 159, in create_vm
        (vm_create_args, vm_set_args) = construct_vzctl_args(lab_spec)
      File "/root/ovpl/src/adapters/CentOSBridgeVZAdapter.py", line 387, in construct_vzctl_args
        " --hostname " + host_name
    TypeError: cannot concatenate 'str' and 'NoneType' objects

[E 150506 02:37:06 Controller:55] test_lab(): Test failed with error: VMPool: create_vm(): Error creating VM: VMPool: create_vm(): Error creating VM: Traceback (most recent call last):
      File "/usr/lib/python2.6/site-packages/tornado-4.1-py2.6-linux-x86_64.egg/tornado/web.py", line 1346, in _execute
        result = method(*self.path_args, **self.path_kwargs)
      File "adapters/AdapterServer.py", line 39, in post
        (success, vm_id) = adapter_instance.create_vm(lab_spec)
      File "/root/ovpl/src/adapters/CentOSBridgeVZAdapter.py", line 159, in create_vm
        (vm_create_args, vm_set_args) = construct_vzctl_args(lab_spec)
      File "/root/ovpl/src/adapters/CentOSBridgeVZAdapter.py", line 387, in construct_vzctl_args
        " --hostname " + host_name
    TypeError: cannot concatenate 'str' and 'NoneType' objects

FIX: find_os_template should raise an exception if corresponding OS template is not found!

Implement Web Scokets

Create web sockets to display the installation log messages while deploying a service/lab.

manage-services say `mongodb service started` even though mongodb is not installed

When ./manage-services.sh start is executed, even though mongodb is not installed, the output says mongodb service started successfully which is misleading!

I wasted sometime thinking everything is fine, only to realize that mongodb is not even installed.

manage-services.sh should give correct output messages.

Please see attached screenshot for more details.

Steps to reproduce:

  1. Uninstall mongodb in a system running ADS.
  2. Start the services using ./manage-services.sh start
  3. The manage-services.sh script will say mongodb started, even when it is not installed!

ads-manage-services

LabManager's exception string is not correct

LabManager can raise two different exceptions when trying to parse json file. The string passed during exception raise is not getting logged by Controller, probably because the string passing mechanism is not correct. This needs to be fixed.

LabManager's pull-repo is not working

Pulling a repo for which a cache already exists seems to fail if labspec.json is modified in the upstream. Not sure if it fails for other changes also.

2014-03-04 04:52:59 PM - ovpl - DEBUG - LabManager.get_lab_reqs()
error: Your local changes to 'scripts/labspec.json' would be overwritten by merge. Aborting.
Please, commit your changes or stash them before you can merge.

Pull does not work

Pull does not work when git version is at 1.7, ADS will be able to pull when git is upgraded to 2.0.1

Exact error messages when lab deployment fails

When a lab deployment fails due to some step(s) mentioned in the scripts provided by the lab developer, ADS does not give the exact error messages output by those steps.

ADS just says, lab script execution step returned non-zero exit status. This error message is not really helpful for the lab developer/integrator to debug their scripts.

Fix ADS to capture the output/exact error messages from those steps/scripts, so that it can be helpful for lab developers/integrators.

Lab ID should not be provided by the ADS user

The key for the record that is saved into DB during deployment of a lab is
lab_id. The values used for lab_id are alphanumeric e.g cse02, and are
provided by the lab deployer to deploy a lab. lab_id is solely used to
uniquely identify a record that is saved during deployment of lab in a database
by ADS; essentially used for book keeping by the ADS.

In any situation, the user of ADS should not be burdened with providing a key.
Instead, the generation should be the responsibility of ADS in such a way that
a lab is always identified uniquely at any time.

Run ADS on port 80

Currently, ADS runs on port 8080. Since this a publicly available url, it should on port 80.

[AWSAdapter] - Move from IAM credentials to IAM-based roles

IAM roles are better suited to access AWS resources by non-human entities.
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html
http://docs.aws.amazon.com/IAM/latest/UserGuide/IAMBestPractices.html#use-roles-with-ec2

Steps needed to modify AWSAdapter to work with IAM role:

  • Remove the code that uses distributed credentials(config/settings., etc)
  • Remove the parameters from initializers if any used.
  • First the application checks the config file for credentials and if it doesn't find it there, then it queries the EC2-instance meta-data for credentials.
  • EC2 instance provides the credentials to the application from the role with which the instance is created.
  • IAM role provides with secure mechanism for distributing AWS credentials to application running on EC2 instances.

Enabling two way communication between the services.

In a http request/response, there is no way to know the status of the request until a response. This mechanism is not useful in all situations. When a request taked a longer time, it would be a good idea to provide the status of the request being processed. This can be achieved using websokets.

OVPL controller timeout for large sized repo

When OVPL is trying to release a lab of 1+ GB sized repositories the controller throws back "server is taking too long to respond", but OVPL is cloning the repo in background, if there is no network issues, the repo gets cloned and lab gets deployed successfully on a container but the developer doesn't know the details regarding the status of the lab.

Unable to test OVPL - repo does not exist?

make test:

 ⚡ root@localhost  ~/ovpl/src   master ●  make      
killall python2 #HACK!
python2 adapters/AdapterServer.py &
python2 ControllerServer.py &
 [D 140922 23:46:57 CentOSVZAdapter:171] CentOSVZAdapter: test_logging()
[D 140922 23:46:57 AdapterServer:111] __main__() PORT=8000, CreateURI=/api/1.0/vm/create, DestroyURI=/api/1.0/vm/destroy, RestartURI=/api/1.0/vm/restart
[D 140922 23:46:57 ControllerServer:54] ControllerServer: It will run on port : 8080
[I 140922 23:46:59 web:1780] 200 GET / (10.0.2.2) 4.87ms

[D 140922 23:47:05 Controller:24] Controller.test_lab() for lab ID cse02 and git url [email protected]:virtuallabs/cse02-programming.git
[D 140922 23:47:05 LabManager:25] LabManager: get_lab_reqs():  Invoked from Controller
[D 140922 23:47:05 LabManager:30] LabManager: GIT_CLONE_LOC = /root/labs/lab-repo-cache/
[D 140922 23:47:05 LabManager:31] LabManager: LAB_SPEC_LOC = /scripts/labspec.json
[D 140922 23:47:05 LabManager:35] LabManager: construct_repo_name()
[D 140922 23:47:05 LabManager:41] LabManager: repo_exists()
[D 140922 23:47:05 LabManager:46] LabManager, clone_repo(): git clone [email protected]:virtuallabs/cse02-programming.git /root/labs/lab-repo-cache/cse02cse02-programming
[D 140922 23:47:05 LabManager:49] LabManager, clone_repo(): clone_cmd = ['git', 'clone', '[email protected]:virtuallabs/cse02-programming.git', '/root/labs/lab-repo-cache/cse02cse02-programming']

[E 140922 23:47:10 LabManager:54] LabManager: clone_repo(): git clone failed: cse02cse02-programming Command '['git', 'clone', '[email protected]:virtuallabs/cse02-programming.git', '/root/labs/lab-repo-cache/cse02cse02-programming']' returned non-zero exit status 128
[E 140922 23:47:10 Controller:55] Controller: test_lab(): Test failed with error: Command '['git', 'clone', '[email protected]:virtuallabs/cse02-programming.git', '/root/labs/lab-repo-cache/cse02cse02-programming']' returned non-zero exit status 128
[I 140922 23:47:10 web:1780] 200 POST / (10.0.2.2) 4208.75ms

the git clone run separately:

 git clone [email protected]:virtuallabs/cse02-programming.git /root/labs/lab-repo-cache/cse02cse02-programming
Initialized empty Git repository in /root/labs/lab-repo-cache/cse02cse02-programming/.
git/

conq: repository does not exist.
fatal: The remote end hung up unexpectedly

did I lose my pull / push rights? my ssh keys are registered with bitbucket, so I'm assuming I'm using an outdated repo URL. could someone point me to the new URL please?

pre_build in labspec.json fails!

I am running a shell script to install packages required for a lab with in pre_build of the labspec.json.

I have tested the script on a vanila ubuntu container. The script runs fine without throwing any error.

The same script when passed to ovpl via labspec.json, installation fails. I have set the execute permissions too.
"pre_build": ["sh pre-build-script.sh "],

My script "pre-build-script.sh":
(sudo apt-get update; sudo apt-get install -y make m4 build-essential gcc gfortran libssl-dev python-software-properties; sudo -E apt-add-repository -y ppa:aims/sagemath; sudo apt-get update; sudo apt-get install -y dvipng; sudo dpkg --configure -a; sudo apt-get install -f; sudo apt-get install -y sagemath-upstream-binary --force-yes)

I have tested the same on a new container multiple times and it is successfull. but not via ovpl.

Moving out of persona authentication

As persona is going to shutdown their service from 30th Nov 2016 ADS is no longer to use this service.
Hence alternately we should move to Google Oauth or any other third party service.

ADS issue when running deploying a lab

Getting following error while deploying a lab on Base1 server

File "/usr/lib/python2.6/site-packages/Flask-0.11.1-py2.6.egg/flask/app.py", line 1639, in full_dispatch_request rv = self.dispatch_request() File "/usr/lib/python2.6/site-packages/Flask-0.11.1-py2.6.egg/flask/app.py", line 1625, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "/var/www/html/ads-web-app/api.py", line 70, in index r = requests.post(ADS_URL, data=json.dumps(data), headers=headers) File "/usr/lib/python2.6/site-packages/requests-2.9.1-py2.6.egg/requests/api.py", line 107, in post return request('post', url, data=data, json=json, **kwargs) File "/usr/lib/python2.6/site-packages/requests-2.9.1-py2.6.egg/requests/api.py", line 53, in request return session.request(method=method, url=url, **kwargs) File "/usr/lib/python2.6/site-packages/requests-2.9.1-py2.6.egg/requests/sessions.py", line 468, in request resp = self.send(prep, **send_kwargs) File "/usr/lib/python2.6/site-packages/requests-2.9.1-py2.6.egg/requests/sessions.py", line 576, in send r = adapter.send(request, **kwargs) File "/usr/lib/python2.6/site-packages/requests-2.9.1-py2.6.egg/requests/adapters.py", line 437, in send raise ConnectionError(e, request=request) ConnectionError: HTTPConnectionPool(host='localhost', port=5000): Max retries exceeded with url: / (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7fb54088e510>: Failed to establish a new connection: [Errno 111] Connection refused',)) on browser.

Please fix above issue on Base1 server.

VMManager service will fail to start if OVPL repo is cloned in some other name

VMManager service will fail to start if OVPL repo is cloned in some other name, and appropriate path to VMManager script value is not changed in settings.py. This is tricky, as settings.py is version-controlled changing this file is not a viable solution because it might break other woking code.

This is related to: #41 . Fixing #41 should fix this.

Relook at the module to execute commands

The module used to execute commands currently uses subprocess module of python. This should be relooked to use other platforms like fabric or plumbum to make execution of commands robust.

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.