Difference between revisions of "OCCI library"
(Created page with "Category: Developer's Guide = Scope = This library has been developed in order to allow the integration of gcube with EGI FedCloud infrastructure. In particular, the usag...") |
(→Maven coordinates) |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
The maven artifact coordinates are: | The maven artifact coordinates are: | ||
<dependency> | <dependency> | ||
− | + | <groupId>org.gcube.resources.federation</groupId> | |
− | + | <artifactId>fhn-occi-connector</artifactId> | |
− | + | <version>1.0.0-SNAPSHOT</version> | |
</dependency> | </dependency> | ||
− | Check on [http://maven.research-infrastructures.eu/nexus/index.html#nexus-search; | + | Check on [http://maven.research-infrastructures.eu/nexus/index.html#nexus-search;occi-lib Nexus] for the latest version. |
+ | |||
= APIs = | = APIs = | ||
In the following the functionalities proposed by the library are shown. | In the following the functionalities proposed by the library are shown. | ||
− | == VOMS proxy generation == | + | == Site Connection == |
+ | === VOMS proxy generation === | ||
In order to access the EGI FedCloud infrastructure it is necessary to create a VOMS proxy certificate. | In order to access the EGI FedCloud infrastructure it is necessary to create a VOMS proxy certificate. | ||
Open a shell and run the following command: | Open a shell and run the following command: | ||
− | <source> | + | <source lang="html4strict"> |
$voms-proxy-init --voms fedcloud.egi.eu --rfc --dont-verify-ac | $voms-proxy-init --voms fedcloud.egi.eu --rfc --dont-verify-ac | ||
− | </source> | + | </source > |
Later it is necessary to digit the own EGI identity grid password. | Later it is necessary to digit the own EGI identity grid password. | ||
− | <source> | + | <source lang="html4strict"> |
Enter GRID pass phrase for this identity: | Enter GRID pass phrase for this identity: | ||
Your identity: /C=IT/O=INFN/OU=Personal Certificate/L=ENGINEERING RDLAB/CN=Nunzio Andrea Galante | Your identity: /C=IT/O=INFN/OU=Personal Certificate/L=ENGINEERING RDLAB/CN=Nunzio Andrea Galante | ||
Line 32: | Line 34: | ||
Your proxy is valid until Thu Nov 12 01:13:17 2015 | Your proxy is valid until Thu Nov 12 01:13:17 2015 | ||
</source> | </source> | ||
− | == Authentication == | + | |
+ | === Authentication === | ||
The library provides both VOMS and X509 access authentication methods. | The library provides both VOMS and X509 access authentication methods. | ||
A list of sites exposing OCCI and endorsed by FedCloud VO is available at [https://appdb.egi.eu/ Appdb repository]. | A list of sites exposing OCCI and endorsed by FedCloud VO is available at [https://appdb.egi.eu/ Appdb repository]. | ||
Line 42: | Line 45: | ||
jocci.setTrustStore("CA Path certificates"); | jocci.setTrustStore("CA Path certificates"); | ||
</source> | </source> | ||
− | == Endpoint Connection == | + | === Endpoint Connection === |
<source lang = java> | <source lang = java> | ||
jocci.connect(); | jocci.connect(); | ||
</source> | </source> | ||
− | <source> | + | |
+ | Sample output: | ||
+ | <source lang="html4strict"> | ||
Connected to endpoint: https://carach5.ics.muni.cz:11443/ | Connected to endpoint: https://carach5.ics.muni.cz:11443/ | ||
</source> | </source> | ||
− | == | + | |
+ | == Resources listing == | ||
+ | === Own compute resources === | ||
<source lang = java> | <source lang = java> | ||
jocci.getComputeList(); | jocci.getComputeList(); | ||
</source> | </source> | ||
− | <source> | + | Sample output: |
+ | <source lang="html4strict"> | ||
Computes Location: | Computes Location: | ||
https://carach5.ics.muni.cz:11443/compute/64586 | https://carach5.ics.muni.cz:11443/compute/64586 | ||
</source> | </source> | ||
− | == | + | |
+ | === Storage resources === | ||
<source lang=java> | <source lang=java> | ||
jocci.getNetList(); | jocci.getNetList(); | ||
</source> | </source> | ||
− | <source> | + | Sample output: |
+ | <source lang="html4strict"> | ||
Storage Locations: | Storage Locations: | ||
https://carach5.ics.muni.cz:11443/storage/774; | https://carach5.ics.muni.cz:11443/storage/774; | ||
Line 69: | Line 79: | ||
https://carach5.ics.muni.cz:11443/storage/779; | https://carach5.ics.muni.cz:11443/storage/779; | ||
</source> | </source> | ||
− | == | + | |
+ | === Network resources === | ||
<source lang = java> | <source lang = java> | ||
jocci.getStorageList(); | jocci.getStorageList(); | ||
</source> | </source> | ||
− | <source> | + | Sample output: |
+ | <source lang="html4strict"> | ||
Network Locations: | Network Locations: | ||
https://carach5.ics.muni.cz:11443/network/6 | https://carach5.ics.muni.cz:11443/network/6 | ||
Line 80: | Line 92: | ||
https://carach5.ics.muni.cz:11443/network/24 | https://carach5.ics.muni.cz:11443/network/24 | ||
</source> | </source> | ||
− | == Getting OS templates == | + | |
+ | === Getting OS templates === | ||
<source lang=java> | <source lang=java> | ||
jocci.getOsTemplateList(); | jocci.getOsTemplateList(); | ||
</source> | </source> | ||
− | <source> | + | Sample output: |
+ | <source lang="html4strict"> | ||
17 AVAILABLE OS TEMPLATES MIXINS | 17 AVAILABLE OS TEMPLATES MIXINS | ||
Category{term=uuid_umd_sl6_fedcloud_warg_138, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=UMD-SL6@fedcloud-warg, location=/mixin/os_tpl/uuid_umd_sl6_fedcloud_warg_138/, attributes=SetCover{[]}} | Category{term=uuid_umd_sl6_fedcloud_warg_138, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=UMD-SL6@fedcloud-warg, location=/mixin/os_tpl/uuid_umd_sl6_fedcloud_warg_138/, attributes=SetCover{[]}} | ||
Line 104: | Line 118: | ||
Category{term=uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=Ubuntu-Server-12.04-LTS@fedcloud-dukan, location=/mixin/os_tpl/uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81/, attributes=SetCover{[]}} | Category{term=uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=Ubuntu-Server-12.04-LTS@fedcloud-dukan, location=/mixin/os_tpl/uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81/, attributes=SetCover{[]}} | ||
</source> | </source> | ||
− | == Getting Resource templates == | + | |
+ | === Getting Resource templates === | ||
<source lang=java> | <source lang=java> | ||
jocci.getResourcesTemplateList(); | jocci.getResourcesTemplateList(); | ||
</source> | </source> | ||
− | <source> | + | Sample output: |
+ | <source lang="html4strict"> | ||
7 AVAILABLE RESOURCES TEMPLATES MIXINS | 7 AVAILABLE RESOURCES TEMPLATES MIXINS | ||
Category{term=mammoth, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Mammoth Instance - 8 cores and 32 GB RAM, location=/mixin/resource_tpl/mammoth/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} | Category{term=mammoth, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Mammoth Instance - 8 cores and 32 GB RAM, location=/mixin/resource_tpl/mammoth/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} | ||
Line 118: | Line 134: | ||
Category{term=sym_mammoth, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Symmetric Mammoth Instance - 32 cores and 32 GB RAM, location=/mixin/resource_tpl/sym_mammoth/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} | Category{term=sym_mammoth, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Symmetric Mammoth Instance - 32 cores and 32 GB RAM, location=/mixin/resource_tpl/sym_mammoth/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} | ||
</source> | </source> | ||
− | == Setting Contextualization script == | + | |
+ | == Resources Management == | ||
+ | === Setting Contextualization script === | ||
Three different options of providing a contextualization script to a resource when it has to be create are available. | Three different options of providing a contextualization script to a resource when it has to be create are available. | ||
Line 140: | Line 158: | ||
"/usr/local/bin/smartgears-setup"; | "/usr/local/bin/smartgears-setup"; | ||
</source> | </source> | ||
− | == Creating and describing resource == | + | === Creating and describing resource === |
To create a compute it is necessary to specify the OS and Resources templates for the image. | To create a compute it is necessary to specify the OS and Resources templates for the image. | ||
<source lang = java> | <source lang = java> | ||
Line 163: | Line 181: | ||
</source> | </source> | ||
An example of output is the following: | An example of output is the following: | ||
− | <source> | + | <source lang = "text"> |
Creating compute resource... | Creating compute resource... | ||
Mixin: | Mixin: | ||
Line 209: | Line 227: | ||
</source> | </source> | ||
Even if you choose to use the gcube_smart_executor VA as OS Mixin template, once that the GHN compute has been created, it becomes registered to d4Science infrastructure and can be monitored on https://dev.d4science.org/web/guest/monitor | Even if you choose to use the gcube_smart_executor VA as OS Mixin template, once that the GHN compute has been created, it becomes registered to d4Science infrastructure and can be monitored on https://dev.d4science.org/web/guest/monitor | ||
− | == Starting resource == | + | |
+ | === Starting resource === | ||
<source lang=java> | <source lang=java> | ||
//do not use after createResourceAndDescribe | //do not use after createResourceAndDescribe | ||
Line 215: | Line 234: | ||
//jocci.startResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586")); | //jocci.startResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586")); | ||
</source> | </source> | ||
− | <source> | + | Sample output: |
+ | <source lang="html4strict"> | ||
Starting created compute...OK! | Starting created compute...OK! | ||
</source> | </source> | ||
− | == Stopping resource == | + | |
+ | === Stopping resource === | ||
<source lang = java> | <source lang = java> | ||
jocci.stopResource(new URI("Resource Location URI")); | jocci.stopResource(new URI("Resource Location URI")); | ||
//jocci.stopResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586")); | //jocci.stopResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586")); | ||
</source> | </source> | ||
− | <source> | + | Sample output: |
+ | <source lang="html4strict"> | ||
Stopping created compute...OK! | Stopping created compute...OK! | ||
</source> | </source> | ||
− | == Deleting resource == | + | |
+ | === Deleting resource === | ||
<source lang = java> | <source lang = java> | ||
jocci.deleteResource(new URI("Resource Location URI")); | jocci.deleteResource(new URI("Resource Location URI")); | ||
//jocci.deleteResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586")); | //jocci.deleteResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586")); | ||
</source> | </source> | ||
− | <source> | + | Sample output: |
+ | <source lang="html4strict"> | ||
Deleting created compute...OK! | Deleting created compute...OK! | ||
</source> | </source> |
Latest revision as of 15:44, 5 May 2016
Scope
This library has been developed in order to allow the integration of gcube with EGI FedCloud infrastructure. In particular, the usage of the library will facilitate the interaction with the sites exposing OCCI just by manipulating APIs.
Usage
Maven coordinates
The maven artifact coordinates are:
<dependency> <groupId>org.gcube.resources.federation</groupId> <artifactId>fhn-occi-connector</artifactId> <version>1.0.0-SNAPSHOT</version> </dependency>
Check on Nexus for the latest version.
APIs
In the following the functionalities proposed by the library are shown.
Site Connection
VOMS proxy generation
In order to access the EGI FedCloud infrastructure it is necessary to create a VOMS proxy certificate. Open a shell and run the following command:
$voms-proxy-init --voms fedcloud.egi.eu --rfc --dont-verify-ac
Later it is necessary to digit the own EGI identity grid password.
Enter GRID pass phrase for this identity: Your identity: /C=IT/O=INFN/OU=Personal Certificate/L=ENGINEERING RDLAB/CN=Nunzio Andrea Galante Creating temporary proxy ........................ Done Contacting voms1.egee.cesnet.cz:15002 [/DC=org/DC=terena/DC=tcs/OU=Domain Control Validated/CN=voms1.egee.cesnet.cz] "fedcloud.egi.eu" Done Creating proxy ...................................... Done Your proxy is valid until Thu Nov 12 01:13:17 2015
Authentication
The library provides both VOMS and X509 access authentication methods. A list of sites exposing OCCI and endorsed by FedCloud VO is available at Appdb repository.
String a = X509CredentialManager.createProxy("/tmp/your_proxy.pem", ""); //2nd level proxy FedcloudOCCI jocci = new FedcloudOCCI("endpoint"); //FedcloudOCCI jocci = new FedcloudOCCI("https://carach5.ics.muni.cz:11443"); jocci.setCertificate(a); jocci.setTrustStore("CA Path certificates");
Endpoint Connection
jocci.connect();
Sample output:
Connected to endpoint: https://carach5.ics.muni.cz:11443/
Resources listing
Own compute resources
jocci.getComputeList();
Sample output:
Computes Location: https://carach5.ics.muni.cz:11443/compute/64586
Storage resources
jocci.getNetList();
Sample output:
Storage Locations: https://carach5.ics.muni.cz:11443/storage/774; https://carach5.ics.muni.cz:11443/storage/775; https://carach5.ics.muni.cz:11443/storage/776; https://carach5.ics.muni.cz:11443/storage/777; https://carach5.ics.muni.cz:11443/storage/779;
Network resources
jocci.getStorageList();
Sample output:
Network Locations: https://carach5.ics.muni.cz:11443/network/6 https://carach5.ics.muni.cz:11443/network/8 https://carach5.ics.muni.cz:11443/network/17 https://carach5.ics.muni.cz:11443/network/24
Getting OS templates
jocci.getOsTemplateList();
Sample output:
17 AVAILABLE OS TEMPLATES MIXINS Category{term=uuid_umd_sl6_fedcloud_warg_138, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=UMD-SL6@fedcloud-warg, location=/mixin/os_tpl/uuid_umd_sl6_fedcloud_warg_138/, attributes=SetCover{[]}} Category{term=uuid_egi_centos_6_fedcloud_warg_130, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=EGI-CentOS-6@fedcloud-warg, location=/mixin/os_tpl/uuid_egi_centos_6_fedcloud_warg_130/, attributes=SetCover{[]}} Category{term=uuid_egi_fedcloud_clients_fedcloud_warg_128, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=EGI-FedCloud-Clients@fedcloud-warg, location=/mixin/os_tpl/uuid_egi_fedcloud_clients_fedcloud_warg_128/, attributes=SetCover{[]}} Category{term=uuid_egi_ubuntu_server_14_04_lts_fedcloud_warg_131, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=EGI-Ubuntu-Server-14.04-LTS@fedcloud-warg, location=/mixin/os_tpl/uuid_egi_ubuntu_server_14_04_lts_fedcloud_warg_131/, attributes=SetCover{[]}} Category{term=uuid_chipster_ubuntu_server_12_04_lts_fedcloud_dukan_96, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=Chipster-Ubuntu-Server-12.04-LTS@fedcloud-dukan, location=/mixin/os_tpl/uuid_chipster_ubuntu_server_12_04_lts_fedcloud_dukan_96/, attributes=SetCover{[]}} Category{term=uuid_egi_compss_lofar_debian_7_0_x86_64_0001_fedcloud_dukan_113, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=EGI-COMPSs-Lofar-Debian-7.0-x86_64-0001@fedcloud-dukan, location=/mixin/os_tpl/uuid_egi_compss_lofar_debian_7_0_x86_64_0001_fedcloud_dukan_113/, attributes=SetCover{[]}} Category{term=uuid_centos_6_5_minimal_fedcloud_dukan_83, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=CentOS-6.5-minimal@fedcloud-dukan, location=/mixin/os_tpl/uuid_centos_6_5_minimal_fedcloud_dukan_83/, attributes=SetCover{[]}} Category{term=uuid_transplant_base_fedcloud_warg_132, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=transPLANT-Base@fedcloud-warg, location=/mixin/os_tpl/uuid_transplant_base_fedcloud_warg_132/, attributes=SetCover{[]}} Category{term=uuid_ubuntu_server_14_04_lts_fedcloud_dukan_84, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=Ubuntu-Server-14.04-LTS@fedcloud-dukan, location=/mixin/os_tpl/uuid_ubuntu_server_14_04_lts_fedcloud_dukan_84/, attributes=SetCover{[]}} Category{term=uuid_egi_pmes_14_ubuntu_15_04_x86_64_0001_fedcloud_warg_108, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=EGI-PMES-14-Ubuntu-15.04-x86_64-0001@fedcloud-warg, location=/mixin/os_tpl/uuid_egi_pmes_14_ubuntu_15_04_x86_64_0001_fedcloud_warg_108/, attributes=SetCover{[]}} Category{term=uuid_dci_bridge_fedcloud_dukan_109, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=DCI-Bridge@fedcloud-dukan, location=/mixin/os_tpl/uuid_dci_bridge_fedcloud_dukan_109/, attributes=SetCover{[]}} Category{term=uuid_egi_ubuntu_server_12_04_lts_fedcloud_warg_129, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=EGI-Ubuntu-Server-12.04-LTS@fedcloud-warg, location=/mixin/os_tpl/uuid_egi_ubuntu_server_12_04_lts_fedcloud_warg_129/, attributes=SetCover{[]}} Category{term=uuid_scientific_linux_6_5_fedcloud_dukan_82, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=Scientific-Linux-6.5@fedcloud-dukan, location=/mixin/os_tpl/uuid_scientific_linux_6_5_fedcloud_dukan_82/, attributes=SetCover{[]}} Category{term=uuid_cernvm_3_3_0_40gb_fedcloud_dukan_80, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=CERNVM-3.3.0-40GB@fedcloud-dukan, location=/mixin/os_tpl/uuid_cernvm_3_3_0_40gb_fedcloud_dukan_80/, attributes=SetCover{[]}} Category{term=uuid_moinmoinwiki_fedcloud_warg_124, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=MoinMoinWiki@fedcloud-warg, location=/mixin/os_tpl/uuid_moinmoinwiki_fedcloud_warg_124/, attributes=SetCover{[]}} Category{term=uuid_gcubesmartexecutor_fedcloud_warg_139, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=GCubeSmartExecutor@fedcloud-warg, location=/mixin/os_tpl/uuid_gcubesmartexecutor_fedcloud_warg_139/, attributes=SetCover{[]}} Category{term=uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81, scheme=http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#, title=Ubuntu-Server-12.04-LTS@fedcloud-dukan, location=/mixin/os_tpl/uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81/, attributes=SetCover{[]}}
Getting Resource templates
jocci.getResourcesTemplateList();
Sample output:
7 AVAILABLE RESOURCES TEMPLATES MIXINS Category{term=mammoth, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Mammoth Instance - 8 cores and 32 GB RAM, location=/mixin/resource_tpl/mammoth/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} Category{term=large, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Large Instance - 4 cores and 8 GB RAM, location=/mixin/resource_tpl/large/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} Category{term=small, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Small Instance - 1 core and 2 GB RAM, location=/mixin/resource_tpl/small/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=false, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} Category{term=medium, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Medium Instance - 2 cores and 4 GB RAM, location=/mixin/resource_tpl/medium/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=false, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} Category{term=goliath, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Goliath Instance - 16 cores and 64 GB RAM, location=/mixin/resource_tpl/goliath/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} Category{term=extra_large, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Extra Large Instance - 4 cores and 16 GB RAM, location=/mixin/resource_tpl/extra_large/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}} Category{term=sym_mammoth, scheme=http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#, title=Symmetric Mammoth Instance - 32 cores and 32 GB RAM, location=/mixin/resource_tpl/sym_mammoth/, attributes=SetCover{[Attribute{name=occi.compute.cores, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.architecture, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.speed, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}, Attribute{name=occi.compute.memory, required=false, immutable=true, type=null, pattern=.*, defaultValue=null, description=null}]}}
Resources Management
Setting Contextualization script
Three different options of providing a contextualization script to a resource when it has to be create are available.
1. By using the content of a public URL
String c = "https://appdb.egi.eu/storage/cs/vapp/15819120-7ee4-4b85-818a-d9bd755a61f0/devsec-init"; URL context = new URL(c);
2. By passing the content of a script via local file
String path = "/my/local/path/script.sh"; File f = new File(path);
3. Providing directly the content of the script in the code (deprecated option)
String gcube_script = "#!/bin/bash \n" + "export SCOPE=devsec \n"+ "export INFRA_NAME=gcube \n"+ "export LOCATION=pisa \n"+ "export COUNTRY=IT \n"+ "/usr/local/bin/smartgears-setup";
Creating and describing resource
To create a compute it is necessary to specify the OS and Resources templates for the image.
Mixin os = jocci.getOsTemplateList().get(0); //first os template avilable Mixin resource = jocci.getResourcesTemplateList().get(0); //first resource template available in the list
Alternatively we can specify directly the Virtual Appliance we want to refer to :
Mixin os = null; for (int i=0; i < jocci.getOsTemplateList().size(); i++) { os = jocci.getOsTemplateList().get(i);//gcube OS template available in the list if (os.getTerm().equals("uuid_gcubesmartexecutorv4_fedcloud_warg_142")) break; }
Depending on the typology of contextualization script to upload, it is possible to use four different approacches to create the resource:
jocci.createComputeAndDescribe(os,resource,"Resource name"); //no context script jocci.createComputeAndDescribe(os,resource,"Resource name",context); //Script from URI jocci.createComputeAndDescribe(os,resource,"Resource name",f); //Script from file jocci.createComputeAndDescribe(os,resource,"Resource name",gcube_script); //String option
An example of output is the following:
Creating compute resource... Mixin: Category: uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81;scheme="http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#";class="mixin";title="Ubuntu-Server-12.04-LTS@fedcloud-dukan";rel="http://schemas.ogf.org/occi/infrastructure#os_tpl";location="/mixin/os_tpl/uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81/" Category: mammoth;scheme="http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#";class="mixin";title="Mammoth Instance - 8 cores and 32 GB RAM";rel="http://schemas.ogf.org/occi/infrastructure#resource_tpl";location="/mixin/resource_tpl/mammoth/";attributes="occi.compute.architecture{immutable} occi.compute.cores{immutable} occi.compute.memory{immutable} occi.compute.speed{immutable}" #!/bin/bash # Variables that are used to configure the smartexecutor instance # The HOST variable is not mandatory. The machine FQDN will be used instead #export HOST=<instance hostname> export SCOPE=devsec export INFRA_NAME=gcube export LOCATION=pisa export COUNTRY=IT # This script is installed into the VM instance /usr/local/bin/smartgears-setup Created compute instance at location: 'https://carach5.ics.muni.cz:11443/compute/64586'. Description: Category: compute;scheme="http://schemas.ogf.org/occi/infrastructure#";class="kind";location="/compute/" Category: uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81;scheme="http://occi.carach5.ics.muni.cz/occi/infrastructure/os_tpl#";class="mixin";location="/mixin/os_tpl/uuid_ubuntu_server_12_04_lts_fedcloud_dukan_81/" Category: compute;scheme="http://opennebula.org/occi/infrastructure#";class="mixin";location="/mixin/compute/" Category: mammoth;scheme="http://schema.fedcloud.egi.eu/occi/infrastructure/resource_tpl#";class="mixin";location="/mixin/resource_tpl/mammoth/" Category: user_data;scheme="http://schemas.openstack.org/compute/instance#";class="mixin";location="/mixin/user_data/" Category: public_key;scheme="http://schemas.openstack.org/instance/credentials#";class="mixin";location="/mixin/public_key/" X-OCCI-Attribute: occi.compute.cores=8 X-OCCI-Attribute: occi.compute.memory=32.0 X-OCCI-Attribute: occi.compute.state="waiting" X-OCCI-Attribute: occi.core.id=64586 X-OCCI-Attribute: occi.core.summary="Instantiated with rOCCI-server on Wed, 11 Nov 2015 14:47:37 +0100." X-OCCI-Attribute: occi.core.title="VM name" X-OCCI-Attribute: org.opennebula.compute.cpu=8.0 X-OCCI-Attribute: org.opennebula.compute.id=64586 X-OCCI-Attribute: org.openstack.compute.user_data="IyEvYmluL2Jhc2gKIyBWYXJpYWJsZXMgdGhhdCBhcmUgdXNlZCB0byBjb25maWd1cmUgdGhlIHNtYXJ0ZXhlY3V0b3IgaW5zdGFuY2UKIyBUaGUgSE9TVCB2YXJpYWJsZSBpcyBub3QgbWFuZGF0b3J5LiBUaGUgbWFjaGluZSBGUUROIHdpbGwgYmUgdXNlZCBpbnN0ZWFkCiNleHBvcnQgSE9TVD08aW5zdGFuY2UgaG9zdG5hbWU+CmV4cG9ydCBTQ09QRT1kZXZzZWMKZXhwb3J0IElORlJBX05BTUU9Z2N1YmUKZXhwb3J0IExPQ0FUSU9OPXBpc2EKZXhwb3J0IENPVU5UUlk9SVQKCiMgVGhpcyBzY3JpcHQgaXMgaW5zdGFsbGVkIGludG8gdGhlIFZNIGluc3RhbmNlCi91c3IvbG9jYWwvYmluL3NtYXJ0Z2VhcnMtc2V0dXAK" X-OCCI-Attribute: org.openstack.credentials.publickey.data="ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDrbZDYeDVxudawo6FVEPOmBVcRhf/DU1z9v82bvPWMxu/wMqJ0HriUCFYj5yfsfT3eKqlzY1K3HVaS8jQW2JYrR9F5HvDlg/dR4LoLfmzKpB9vuAbpwizEg+OkPAtApJPITasj7xQrCFHtqhVTzkcqbuU4gXa5hX7rVpBWzwCP25wMHima8Y8WcxkSGGBDTxhE0okjUhc07ExTlxsgb/2PX/ziqCjSrjkNaxMIAU4dN0alb7JKjTiS9hYLK3yz2rN91KLMlalO5SgQ8xTRml8PXZAoK86MG2KLBH6VKFsu6mvc16Hp9KNlx2pw9Q9XepVG/Vgm9evEwRjSvqqR8w9p nunzioandreagalante@nunzioandreagalante-Spring-Peak" Link: </network/24>;rel="http://schemas.ogf.org/occi/infrastructure#network";self="/link/networkinterface/compute_64586_nic_0";category="http://schemas.ogf.org/occi/infrastructure#networkinterface http://opennebula.org/occi/infrastructure#networkinterface http://schemas.ogf.org/occi/infrastructure/networkinterface#ipnetworkinterface";occi.core.id="compute_64586_nic_0";occi.core.source="/compute/64586";occi.core.target="/network/24";occi.core.title="public";occi.networkinterface.address="147.228.242.244";occi.networkinterface.interface="eth0";occi.networkinterface.mac="02:00:93:e4:f2:f4";occi.networkinterface.state="inactive";org.opennebula.networkinterface.bridge="onebr0"; Link: </storage/779>;rel="http://schemas.ogf.org/occi/infrastructure#storage";self="/link/storagelink/compute_64586_disk_0";category="http://schemas.ogf.org/occi/infrastructure#storagelink http://opennebula.org/occi/infrastructure#storagelink";occi.core.id="compute_64586_disk_0";occi.core.source="/compute/64586";occi.core.target="/storage/779";occi.core.title="800f345f-5278-5523-a1dc-8a98476006f8";occi.storagelink.deviceid="/dev/vda";occi.storagelink.state="inactive"; Waiting for compute to become active... . . . . Compute active!
Even if you choose to use the gcube_smart_executor VA as OS Mixin template, once that the GHN compute has been created, it becomes registered to d4Science infrastructure and can be monitored on https://dev.d4science.org/web/guest/monitor
Starting resource
//do not use after createResourceAndDescribe jocci.startResource(new URI("Resource Location URI")); //jocci.startResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586"));
Sample output:
Starting created compute...OK!
Stopping resource
jocci.stopResource(new URI("Resource Location URI")); //jocci.stopResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586"));
Sample output:
Stopping created compute...OK!
Deleting resource
jocci.deleteResource(new URI("Resource Location URI")); //jocci.deleteResource(new URI("https://carach5.ics.muni.cz:11443/compute/64586"));
Sample output:
Deleting created compute...OK!