aboutsummaryrefslogtreecommitdiffstats
path: root/ncomp-openstack-model/src/main/xcore/location.xcore
blob: 3c84ac9f2460231f056620ce6c1048298b509bc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
/*-
 * ============LICENSE_START==========================================
 * OPENECOMP - DCAE
 * ===================================================================
 * Copyright (c) 2017 AT&T Intellectual Property. All rights reserved.
 * ===================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0 
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END============================================
 */
	
@GenModel(modelDirectory="/ncomp-openstack-model/src/main/xcore-gen")

package org.openecomp.ncomp.openstack.location

import org.openecomp.ncomp.core.NamedEntity
import org.openecomp.ncomp.openstack.compute.Flavor
import org.openecomp.ncomp.openstack.compute.FloatingIp
import org.openecomp.ncomp.openstack.compute.Image
import org.openecomp.ncomp.openstack.compute.KeyPair
import org.openecomp.ncomp.openstack.compute.SecurityGroup
import org.openecomp.ncomp.openstack.compute.Server
import org.openecomp.ncomp.openstack.compute.Volume
import org.openecomp.ncomp.openstack.neutron.CreateNetworkRequest
import org.openecomp.ncomp.openstack.neutron.Network
import org.openecomp.ncomp.openstack.neutron.NeutronSecurityGroup
import org.openecomp.ncomp.openstack.neutron.Port
import org.openecomp.ncomp.openstack.neutron.Router
import org.openecomp.ncomp.openstack.neutron.Subnet
import org.openecomp.ncomp.openstack.neutron.NeutronService
import org.openecomp.ncomp.openstack.compute.ComputeService
import org.openecomp.ncomp.openstack.neutron.NeutronFloatingIp
import org.openecomp.ncomp.openstack.ceilometer.CeilometerService
import org.openecomp.ncomp.openstack.ceilometer.CeilometerProject 

annotation 'http://openecomp.org/sirius/persistence' as persistence 


class OpenStackLocation extends NamedEntity, NeutronService, ComputeService, CeilometerService { 
	OpenStackVersion version
	boolean remoteLocation = "false"
	String remoteLocationName
	boolean allowCreateFlavor
	String keystoneUrl
	String bypassIp 
	int flavorId = "20000"
	boolean supportsSecurityGroups = "true"
	boolean supportsFloatingIps = "true"
	contains unordered OpenStackProject[] projects
	contains unordered OpenStackUser[] users  
	contains unordered Image[] images // 
  	contains unordered Flavor[] flavors // 
  	contains unordered Hypervisor[] hypervisors
  	op void poll()
	op void mergeLocation(OpenStackLocation loc)
} 

enum OpenStackVersion {
	Folsom,
	Grizzly,
	Havana,
	Icehouse,
	Juno,
	Kilo,
	Liberty,
	Mitaka
}

class OpenStackProject extends NamedEntity, CeilometerProject {
	String ID
	String adminUser
	String tenantId
	String region
	String privateNetwork
	String publicNetwork
	String apiKey // Rackspace
	contains unordered Server[] servers // 
	refers unordered OpenStackUser[] users
	refers OpenStackUser controllerUser
	op void updateNovaState() 
	contains unordered Volume[] volumes 
	contains unordered FloatingIp[] ips
	contains unordered SecurityGroup[] groups
	contains unordered KeyPair[] keypairs
	contains unordered Network[] networks
	contains unordered Subnet[] subnets
	contains unordered Router[] routers
	contains unordered Port[] ports
	contains unordered NeutronSecurityGroup[] security_groups
	contains unordered NeutronFloatingIp[] floatingips
	op Network createNetwork(CreateNetworkRequest r)
}

class OpenStackUser extends NamedEntity {
	@persistence(propertyFile="bsa.properties")
	transient String password
}

class HypervisorService {
  String host // lab3-bsa-03-bay03
  int ^id // 14
}

class HypervisorCpuTopology {
  int cores // 8
  int threads // 2
  int sockets // 1
}


class HypervisorCpuInfo {
  String vendor // Intel
  String model // SandyBridge
  String arch // x86_64
  String[] features // ["pdpe1gb","osxsave","dca","pdcm","xtpr","tm2","est","smx","vmx","ds_cpl","monitor","dtes64","pbe","tm","ht","ss","acpi","ds","vme"]
  contains HypervisorCpuTopology topology // {"cores":8,"threads":2,"sockets":1}
}


class Hypervisor extends NamedEntity {
  contains HypervisorService service // {"host":"lab3-bsa-03-bay03","id":14}
  String host_ip
  int vcpus_used // 4
  String hypervisor_type // QEMU
  int local_gb_used // 60
  String hypervisor_hostname // 
  int memory_mb_used // 20992
  int memory_mb // 257922
  int current_workload // 0
  int vcpus // 64
  contains HypervisorCpuInfo cpu_info // {"vendor": "Intel", "model": "SandyBridge", "arch": "x86_64", "features": ["pdpe1gb", "osxsave", "dca", "pdcm", "xtpr", "tm2", "est", "smx", "vmx", "ds_cpl", "monitor", "dtes64", "pbe", "tm", "ht", "ss", "acpi", "ds", "vme"], "topology": {"cores": 8, "threads": 2, "sockets": 1}}
  int running_vms // 2
  int free_disk_gb // 1007
  int hypervisor_version // 1002000
  int disk_available_least // 977
  int local_gb // 1067
  int free_ram_mb // 236930
  int ^id // 2
}