Search code examples
javacloudopenstackjclouds

Add Security Groups to Instance in Openstack


I am trying to use Apache JClouds to add/remove a particular Security Group to some instances (which are already running) in a zone. I know that this can be done using the Nova-CLI. Could some one point out how this is done using jclouds? The documentation doesnt really say all that much.


Solution

  • NovaApi novaApi = ContextBuilder
            .newBuilder("openstack-nova")
            .credentials("username", "api_key")
            .buildApi(NovaApi.class);
    
    Ingress ingress = Ingress.builder().fromPort(80).toPort(80).ipProtocol(IpProtocol.TCP).build();
    
    SecurityGroupApi securityGroupApi = novaApi.getSecurityGroupExtensionForZone("RegionOne").get();
    SecurityGroup securityGroup = securityGroupApi.createWithDescription("name", "description");
    SecurityGroupRule rule = securityGroupApi.createRuleAllowingCidrBlock(securityGroup.getName(), ingress, "0.0.0.0/0");
    securityGroupApi.delete(securityGroup.getId());