Search in sources :

Example 1 with Project

use of net.juniper.contrail.api.types.Project in project cloudstack by apache.

the class VirtualNetworkModel method update.

@Override
public void update(ModelController controller) throws InternalErrorException, IOException {
    assert _initialized;
    ApiConnector api = controller.getApiAccessor();
    VlanDao vlanDao = controller.getVlanDao();
    VirtualNetwork vn = _vn;
    if (!isDynamicNetwork()) {
        _vn = (VirtualNetwork) controller.getApiAccessor().findById(VirtualNetwork.class, _uuid);
        return;
    }
    assert _uuid != null : "uuid is not set";
    if (_vn == null) {
        vn = _vn = (VirtualNetwork) controller.getApiAccessor().findById(VirtualNetwork.class, _uuid);
        if (vn == null) {
            vn = new VirtualNetwork();
            if (_projectId != null) {
                Project project;
                try {
                    project = (Project) api.findById(Project.class, _projectId);
                } catch (IOException ex) {
                    s_logger.debug("project read", ex);
                    throw new CloudRuntimeException("Failed to read project", ex);
                }
                vn.setParent(project);
            }
            vn.setName(_name);
            vn.setUuid(_uuid);
        }
    }
    if (_policyModel == null) {
        vn.clearNetworkPolicy();
    } else if (!_policyModel.hasPolicyRules()) {
        vn.clearNetworkPolicy();
        _policyModel.removeSuccessor(this);
    } else {
        vn.setNetworkPolicy(_policyModel.getPolicy(), new VirtualNetworkPolicyType(new VirtualNetworkPolicyType.SequenceType(1, 0), null));
    }
    if (_ipam == null) {
        NetworkIpam ipam = null;
        try {
            String ipam_id = api.findByName(NetworkIpam.class, null, "default-network-ipam");
            if (ipam_id == null) {
                s_logger.debug("could not find default-network-ipam");
                return;
            }
            ipam = (NetworkIpam) api.findById(NetworkIpam.class, ipam_id);
            if (ipam == null) {
                s_logger.debug("could not find NetworkIpam with ipam_id: " + ipam_id);
                return;
            }
        } catch (IOException ex) {
            s_logger.error(ex);
            return;
        }
        _ipam = ipam;
    }
    if (_prefix != null) {
        VnSubnetsType subnet = new VnSubnetsType();
        String[] addr_pair = _prefix.split("\\/");
        subnet.addIpamSubnets(new SubnetType(addr_pair[0], Integer.parseInt(addr_pair[1])), _gateway);
        vn.setNetworkIpam(_ipam, subnet);
    } else if (_trafficType == TrafficType.Public) {
        vn.clearNetworkIpam();
        /* Subnet information for Public is stored in the vlan table */
        List<VlanVO> vlan_list = vlanDao.listVlansByNetworkId(_id);
        for (VlanVO vlan : vlan_list) {
            String cidr = NetUtils.ipAndNetMaskToCidr(vlan.getVlanGateway(), vlan.getVlanNetmask());
            int slash = cidr.indexOf('/');
            String ip_addr = cidr.substring(0, slash);
            int plen = Integer.parseInt(cidr.substring(slash + 1));
            VnSubnetsType subnet = new VnSubnetsType();
            subnet.addIpamSubnets(new SubnetType(ip_addr, plen), vlan.getVlanGateway());
            vn.addNetworkIpam(_ipam, subnet);
        }
    }
    if (_vn == null) {
        try {
            api.create(vn);
        } catch (Exception ex) {
            s_logger.debug("virtual-network create", ex);
            throw new CloudRuntimeException("Failed to create virtual-network", ex);
        }
        _vn = vn;
    } else {
        try {
            api.update(vn);
        } catch (IOException ex) {
            s_logger.warn("virtual-network update", ex);
            throw new CloudRuntimeException("Unable to update virtual-network object", ex);
        }
    }
    for (ModelObject successor : successors()) {
        successor.update(controller);
    }
}
Also used : VirtualNetworkPolicyType(net.juniper.contrail.api.types.VirtualNetworkPolicyType) VlanDao(com.cloud.dc.dao.VlanDao) ApiConnector(net.juniper.contrail.api.ApiConnector) IOException(java.io.IOException) SubnetType(net.juniper.contrail.api.types.SubnetType) InternalErrorException(com.cloud.exception.InternalErrorException) IOException(java.io.IOException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) VirtualNetwork(net.juniper.contrail.api.types.VirtualNetwork) Project(net.juniper.contrail.api.types.Project) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) NetworkIpam(net.juniper.contrail.api.types.NetworkIpam) ArrayList(java.util.ArrayList) List(java.util.List) VlanVO(com.cloud.dc.VlanVO) VnSubnetsType(net.juniper.contrail.api.types.VnSubnetsType)

Example 2 with Project

use of net.juniper.contrail.api.types.Project in project cloudstack by apache.

the class NetworkProviderTest method dbSyncTest.

@Test
public void dbSyncTest() {
    Network network = lookupTestNetwork("test-db-only-net");
    if (network == null) {
        network = createTestNetwork("test-db-only-net");
    }
    UserVm vm = _server.createVM("test-db-only-vm", network);
    try {
        createFloatingIp(network, vm);
    } catch (Exception e) {
        fail("unable to create floating ip");
    }
    /* reset ApiServer objects to default config only, so above created objects
         * exists only in cludstack db but not in api server
         */
    ((ApiConnectorMock) _api).initConfig();
    /* reset model cached objects */
    _contrailMgr.getDatabase().initDb();
    /* Create one object of each type directly in api-server - these objects does not exist in cloudstack */
    net.juniper.contrail.api.types.Domain domain = new net.juniper.contrail.api.types.Domain();
    domain.setName("test-vnc-only-domain--1");
    domain.setUuid(UUID.randomUUID().toString());
    try {
        assertTrue(_api.create(domain));
    } catch (IOException ex) {
        fail(ex.getMessage());
    }
    Project project = new Project();
    project.setName("test-vnc-only-project-1");
    project.setUuid(UUID.randomUUID().toString());
    project.setParent(domain);
    try {
        assertTrue(_api.create(project));
    } catch (IOException ex) {
        fail(ex.getMessage());
    }
    VirtualNetwork net = new VirtualNetwork();
    net.setName("test-vnc-only-net-1");
    net.setUuid(UUID.randomUUID().toString());
    net.setParent(project);
    NetworkIpam ipam = null;
    try {
        // Find default-network-ipam
        String ipam_id = _api.findByName(NetworkIpam.class, null, "default-network-ipam");
        assertNotNull(ipam_id);
        ipam = (NetworkIpam) _api.findById(NetworkIpam.class, ipam_id);
        assertNotNull(ipam);
    } catch (IOException ex) {
        fail(ex.getMessage());
    }
    VnSubnetsType subnet = new VnSubnetsType();
    subnet.addIpamSubnets(new SubnetType("10.0.2.0", 24), "10.0.2.254");
    net.addNetworkIpam(ipam, subnet);
    VirtualMachine vncVm = new VirtualMachine();
    vncVm.setName("test-vnc-only-vm-1");
    try {
        assertTrue(_api.create(vncVm));
    } catch (IOException ex) {
        fail(ex.getMessage());
    }
    VirtualMachineInterface vmi = new VirtualMachineInterface();
    vmi.setParent(vncVm);
    vmi.setName("test-vnc-only-vmi-1");
    try {
        assertTrue(_api.create(vmi));
        assertTrue(_api.create(net));
    } catch (IOException ex) {
        fail(ex.getMessage());
    }
    InstanceIp ip_obj = new InstanceIp();
    ip_obj.setName(net.getName() + ":0");
    ip_obj.setVirtualNetwork(net);
    ip_obj.setVirtualMachineInterface(vmi);
    try {
        assertTrue(_api.create(ip_obj));
        // Must perform a GET in order to update the object contents.
        assertTrue(_api.read(ip_obj));
        assertNotNull(ip_obj.getAddress());
    } catch (IOException ex) {
        fail(ex.getMessage());
    }
    // now db sync
    if (_dbSync.syncAll(DBSyncGeneric.SYNC_MODE_UPDATE) == ServerDBSync.SYNC_STATE_OUT_OF_SYNC) {
        s_logger.info("# Cloudstack DB & VNC are out of sync - resync done");
    }
    if (_dbSync.syncAll(DBSyncGeneric.SYNC_MODE_CHECK) == ServerDBSync.SYNC_STATE_OUT_OF_SYNC) {
        s_logger.info("# Cloudstack DB & VNC are still out of sync");
        fail("DB Sync failed");
    }
}
Also used : InstanceIp(net.juniper.contrail.api.types.InstanceIp) IOException(java.io.IOException) SubnetType(net.juniper.contrail.api.types.SubnetType) CloudException(com.cloud.exception.CloudException) IOException(java.io.IOException) VirtualNetwork(net.juniper.contrail.api.types.VirtualNetwork) Project(net.juniper.contrail.api.types.Project) UserVm(com.cloud.uservm.UserVm) VirtualMachineInterface(net.juniper.contrail.api.types.VirtualMachineInterface) VirtualNetwork(net.juniper.contrail.api.types.VirtualNetwork) Network(com.cloud.network.Network) NetworkIpam(net.juniper.contrail.api.types.NetworkIpam) Domain(com.cloud.domain.Domain) ApiConnectorMock(net.juniper.contrail.api.ApiConnectorMock) VnSubnetsType(net.juniper.contrail.api.types.VnSubnetsType) VirtualMachine(net.juniper.contrail.api.types.VirtualMachine) Test(org.junit.Test)

Example 3 with Project

use of net.juniper.contrail.api.types.Project in project cloudstack by apache.

the class NetworkProviderTest method deleteProject.

public void deleteProject(String name) {
    BaseCmd cmd = new DeleteProjectCmd();
    BaseCmd proxy = ComponentContext.inject(cmd);
    ProjectVO project = _projectDao.findByNameAndDomain(name, Domain.ROOT_DOMAIN);
    try {
        ManagementServerMock.setParameter(proxy, "id", BaseCmd.CommandType.LONG, project.getId());
        ((DeleteProjectCmd) proxy).execute();
        if (_api.findById(net.juniper.contrail.api.types.Project.class, project.getUuid()) != null) {
            fail("unable to delete project in vnc");
        }
    } catch (Exception e) {
        e.printStackTrace();
        fail("Exception while deleting project");
    }
}
Also used : Project(net.juniper.contrail.api.types.Project) BaseCmd(org.apache.cloudstack.api.BaseCmd) DeleteProjectCmd(org.apache.cloudstack.api.command.user.project.DeleteProjectCmd) ProjectVO(com.cloud.projects.ProjectVO) CloudException(com.cloud.exception.CloudException) IOException(java.io.IOException)

Example 4 with Project

use of net.juniper.contrail.api.types.Project in project cloudstack by apache.

the class ServiceInstanceModel method createServiceInstance.

private ServiceInstance createServiceInstance(ModelController controller) {
    Project project = null;
    if (_projectId != null) {
        try {
            ApiConnector api = controller.getApiAccessor();
            project = (Project) api.findById(Project.class, _projectId);
        } catch (IOException ex) {
            s_logger.warn("project read", ex);
            throw new CloudRuntimeException("Unable to create service-instance object", ex);
        }
    }
    ServiceInstance si_obj = new ServiceInstance();
    if (project != null) {
        si_obj.setParent(project);
    }
    si_obj.setName(getName());
    si_obj.setServiceTemplate(_tmpl);
    si_obj.setProperties(new ServiceInstanceType(false, _mgmtName, _leftName, null, _rightName, null, new ServiceInstanceType.ServiceScaleOutType(1, false)));
    try {
        ApiConnector api = controller.getApiAccessor();
        api.create(si_obj);
    } catch (IOException ex) {
        s_logger.warn("service-instance create", ex);
        throw new CloudRuntimeException("Unable to create service-instance object", ex);
    }
    return si_obj;
}
Also used : Project(net.juniper.contrail.api.types.Project) ServiceInstanceType(net.juniper.contrail.api.types.ServiceInstanceType) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) ApiConnector(net.juniper.contrail.api.ApiConnector) ServiceInstance(net.juniper.contrail.api.types.ServiceInstance) IOException(java.io.IOException)

Example 5 with Project

use of net.juniper.contrail.api.types.Project in project cloudstack by apache.

the class NetworkProviderTest method createProject.

public void createProject(String name) {
    BaseCmd cmd = new CreateProjectCmd();
    BaseCmd proxy = ComponentContext.inject(cmd);
    Account system = _accountMgr.getSystemAccount();
    ManagementServerMock.setParameter(proxy, "accountName", BaseCmd.CommandType.STRING, system.getAccountName());
    ManagementServerMock.setParameter(proxy, "domainId", BaseCmd.CommandType.LONG, Domain.ROOT_DOMAIN);
    ManagementServerMock.setParameter(proxy, "name", BaseCmd.CommandType.STRING, name);
    ManagementServerMock.setParameter(proxy, "displayText", BaseCmd.CommandType.STRING, name);
    try {
        ((CreateProjectCmd) proxy).create();
        ((CreateProjectCmd) proxy).execute();
    } catch (Exception e) {
        s_logger.debug("CreateProjectCmd exception: " + e);
        e.printStackTrace();
        fail("create project cmd failed");
    }
    DomainVO domain = _domainDao.findById(Domain.ROOT_DOMAIN);
    try {
        net.juniper.contrail.api.types.Domain vncDomain = (net.juniper.contrail.api.types.Domain) _api.findById(net.juniper.contrail.api.types.Domain.class, domain.getUuid());
        if (_api.findByName(net.juniper.contrail.api.types.Project.class, vncDomain, name) == null) {
            fail("create project failed in vnc");
        }
    } catch (Exception e) {
        e.printStackTrace();
        fail("Exception while creating a project in vnc");
    }
}
Also used : Account(com.cloud.user.Account) BaseCmd(org.apache.cloudstack.api.BaseCmd) CloudException(com.cloud.exception.CloudException) IOException(java.io.IOException) DomainVO(com.cloud.domain.DomainVO) Project(net.juniper.contrail.api.types.Project) CreateProjectCmd(org.apache.cloudstack.api.command.user.project.CreateProjectCmd) Domain(com.cloud.domain.Domain)

Aggregations

IOException (java.io.IOException)6 Project (net.juniper.contrail.api.types.Project)6 CloudException (com.cloud.exception.CloudException)3 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)3 ApiConnector (net.juniper.contrail.api.ApiConnector)3 Domain (com.cloud.domain.Domain)2 InternalErrorException (com.cloud.exception.InternalErrorException)2 NetworkIpam (net.juniper.contrail.api.types.NetworkIpam)2 SubnetType (net.juniper.contrail.api.types.SubnetType)2 VirtualMachine (net.juniper.contrail.api.types.VirtualMachine)2 VirtualNetwork (net.juniper.contrail.api.types.VirtualNetwork)2 VnSubnetsType (net.juniper.contrail.api.types.VnSubnetsType)2 BaseCmd (org.apache.cloudstack.api.BaseCmd)2 VlanVO (com.cloud.dc.VlanVO)1 VlanDao (com.cloud.dc.dao.VlanDao)1 DomainVO (com.cloud.domain.DomainVO)1 Network (com.cloud.network.Network)1 ProjectVO (com.cloud.projects.ProjectVO)1 Account (com.cloud.user.Account)1 UserVm (com.cloud.uservm.UserVm)1